2017-07-14 24 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