对以下代码进行严格的大O分析。由于这个数组,我感到很困惑。
void main( )
{
int m,n,i,j,a[ ], b[ ], c[ ];
printf(''Enter value of m and n'');
scanf(''%d %d'',&m, &n);
for (i = 0; i < n; i++)
{
a[i] = i;
b[i] = i*i;
c[i]= -i;
}
for (j = 0; j < m; j++)
{
printf(''%d\t %d\t %d\n'', a(j), b(j), c(j);
}
}
答案 0 :(得分:1)
找到算法的渐近运行时间,它总是有助于解决部分解决方案。
所以,你有两个for循环。他们对我们很有意思。第一个循环的运行频率是多少?取决于n。所以第一个循环必须在 O(n)
现在我们有了第二个循环。这个循环多久运行一次?运行时取决于m。所以这个循环必须在 O(m),使算法在 O(m + n)中运行。
数组本身不会影响算法的渐近运行时间。
我建议,看看以下帖子: