2017-07-14 27 views
-2

对以下代码进行严格的大O分析。由于这个数组,我感到困惑。如何对算法进行严密的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

请解释一下您更多的困难,你试过 – malioboro

+1

你能告诉我们什么,你不要有什么”从上面的代码了解什么是问题? – sForSujit

回答

1

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

所以,你有两个for-loops。他们对我们很有趣。第一个循环多久运行一次?取决于n。所以第一个循环必须在O(n)

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

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

我建议,有以下职位一看:

Explantions of big O

HOW-TO: Calculating Big-O