我很難弄清楚這兩個代碼的時間復雜度。
c = 0;
for (i = 0; i < n*n; i )
for (j = 0; j < i; j )
c = c 1;
在上面的代碼中,外回圈的時間復雜度是 n^2 ,但在內回圈中很難找到。
j = 1; c = 0;
for(i = 1; i <= n; i = i 1) {
for(k = 1; k <= j; k = k 1) {
c = c 1;
}
j = j * 2;
}
在第二個代碼中,我認為外回圈的時間復雜度為 n,內回圈的時間復雜度為 2^n。我認為這兩個的倍數 ((n)*2^n) 是整個時間復雜度。這樣對嗎?謝謝你的閱讀
uj5u.com熱心網友回復:
在第一個代碼中,您從 1 迭代到 n^2。這意味著您的迭代次數為 0, 1, 2, 3, ........n*n - 1。AP 中的這個系列。
Sum of series in AP = N(N 1)/2 = n^2(n^2 1)/2
Time Complexity is O(n^4)
在第二個代碼中,您從 1 迭代到 n。因此,內回圈將相應地迭代 1、2、4、...2^n。這個系列在GP
Sum of series in GP = a(r^n-1)/r-1 = 2^n
Time complexity is O(2^n)
uj5u.com熱心網友回復:
第一個有 O(n^4),因為 (n*n)^2。第二個有 O(n * 2n)=O(n^2)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319234.html
上一篇:MVC4上的HTML表的問題--使用jQuery動態洗掉行
下一篇:如何使用回圈存盤資料
