[英]Computational complexity of a piece of code
我有一個程序,並試圖計算其復雜性。 我想確定我沒有弄錯
for(int i=4; i<=n; i=i*4)
{
cout<<"counter for first loop: "<<++count1<<endl;
for(int j=i;j>=0;j=j-4)
{
cout<<"counter for second loop: "<<++count2<<endl;
for(int k=0;k<=n;k++)
{
cout<<"counter for third loop: "<<++count3<<endl;
}
}
}
這里,第三個循環的復雜度是O(n),然后與第二個循環一起,復雜度變為O(n.log 4 i),整個程序的復雜度為O(n。(log 4 i) 2 ) 。 我的回答是對的? 謝謝
最內層循環的復雜性是O(n)。 中間的復雜性是O(i / 4),其又是O(i)。 最外層循環的復雜性是O(log 4 n)。 對於代碼的總復雜性,O(nilog 4 n)等於O(n。(log 4 n) 2 )。
您可以正式進行如下操作:
執行此片段:
sum = 0;
for( i = 4 ; i <= n; i = i * 4 ) {
for( j = i ; j >= 0 ; j = j - 4 ) {
for( k = 0 ; k <= n ; k ++ ) {
sum ++;
}
}
}
我們獲得:
結果與上面的公式完全兼容。
此外,兩個內部循環的運行時間都是O(n)...這意味着,當一起執行時,我們得到O(n²)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.