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