如何对算法进行严格的O分析?

时间:2017-07-14 08:51:20

标签: algorithm asymptotic-complexity

对以下代码进行严格的大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);
    }
    }

1 个答案:

答案 0 :(得分:1)

找到算法的渐近运行时间,它总是有助于解决部分解决方案。

所以,你有两个for循环。他们对我们很有意思。第一个循环的运行频率是多少?取决于n。所以第一个循环必须在 O(n)

现在我们有了第二个循环。这个循环多久运行一次?运行时取决于m。所以这个循环必须在 O(m),使算法在 O(m + n)中运行。

数组本身不会影响算法的渐近运行时间。

我建议,看看以下帖子:

Explantions of big O

HOW-TO: Calculating Big-O