0
我在計算下面代碼的大O符號時遇到了一個問題......我知道沒有知道矩陣的大小是O(n^3),但是因爲這個是一個16×16矩陣(即大小已知)是否使它成爲O(1)?Matrix Big O Notation
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 16
int main()
{
float matrix1 [SIZE][SIZE];
float matrix2 [SIZE][SIZE];
float result [SIZE][SIZE];
srand(time(NULL));
int s,j,k=0;
//Generating and displaying matrix 1
printf("Matrix 1\n");
for(s=0; s<SIZE;s++)
{
for(j=0;j<SIZE;j++)
{
matrix1[s][j] = ((float)rand()/RAND_MAX)*10;
printf("%.3f\t" ,matrix1[s][j]);
}
printf("\n");
}
//Generating and displaying matrix 2
printf("\n\nMatrix 2\n");
for(s=0; s<SIZE;s++)
{
for(j=0;j<SIZE;j++)
{
matrix2[s][j] = ((float)rand()/RAND_MAX)*10;
printf("%.3f\t" ,matrix2[s][j]);
}
printf("\n");
}
//Generating and displaying Result Matrix
printf("\n\nResult Matrix\n");
for(s=0;s<SIZE;s++)
{
for(j=0;j<SIZE;j++)
{
float sum=0.0;
for(k=0;k<SIZE;k++)
{
sum=sum+(matrix1[s][k]*matrix2[k][j]);
}
result[s][j]=sum;
printf("%.3f\t" ,result[s][j]);
}
printf("\n");
}
fflush(stdin);
getchar();
return 0;
}
它是O(1),但是*巨大*常數被大哦表示法隱藏,並且只能有意義地與其他算法相比較來乘以16x16矩陣。 – chepner
如果事先知道尺寸大小,並且可以忽略不計,您幾乎不必關心Big-O符號 –
感謝您的幫助。我很懷疑,因爲我需要在我的學校項目中提及它。再次感謝 ! – cgeekmt