[英]What will be the time complexity of a for loop nested 2 times?
所以估計時間復雜度的算法是這樣的
int a = 0;
for (i = 0; i < n; i++) //runs from i-n;
for (j = i; j < i * i; j++) // runs from i - i*i;
for (k = 0; k < j; k++) //runs from 0 - j;
a++;
我已經評論了我對算法的理解的基本細節。
外循環明顯運行 O(n) 次,第一個內循環從 'i' 運行到 'i*i'
第二個內部循環運行 '0' 到 'j'
我也知道我必須應用產品規則。
但我無法計算兩個內部循環相對於“n”的時間復雜度。
如果我的解釋有誤,請糾正我。
當您有多個級別的 for 循環時,請單獨分析每個循環的復雜性,然后將它們相乘。
在這個例子中,第一個循環的復雜度是O(n)
,就像你說的那樣。
第二個循環的復雜性是O(n^2)
因為在最壞的情況下,您必須執行的操作數量是i*i
的數量級,可能與n^2
一樣大。 它不從零開始也沒關系,因為在像O(n^2 - n)
這樣的表達式中,除了最高階項之外的所有內容都會被忽略。
第三個循環也需要O(n^2)
,因為在最壞的情況下,您可以擁有盡可能多的j
操作,並且再次可能與n^2
一樣大。
最后a++
在恆定時間內發生。 將所有內容相乘,您的復雜度為O(n^5)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.