[英]Big O for multi loops
count++;
count++;
count++;
for (int i = 0; i < n; i++)
{
for(int j = 0; j < i*i; j++)
{
for (int k = 0; k < j; k++)
{
count++;
sum++;
}
}
}
count++;
return count;
}
试图获得这个编码的大O. 努力理解循环如何相互作用。 当我运行它时,我得到n = 25 count = 898960.我已经尝试了O(n)^ 5 + 9一直到O(n)^ 5 / n
这个问题的所有其他例子都没有处理我在第二个循环(I * I)中使用,j在第三个循环中使用
它看起来像是O(n^5)
。
for (int i = 0; i < n; i++) // 0 to n -> O(n)
for(int j = 0; j < i*i; j++) // 0 to n * n -> O(n^2) repeated n times -> O(n^3)
for (int k = 0; k < j; k++) // 0 to n * n -> O (n^2) repeated O(n^3) times -> O(n^5)
在最好的情况下,三个嵌套循环会给你O(n^3)
,但是当你有第二个循环重复(n^2)
次时,这将平衡它的复杂性和第三个循环。 因此,在一个简单的数学符号中,它将是: (n) * (n * n) * (n * n) = n^5
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.