具有嵌套循环的算法的重要性

时间:2012-02-01 09:22:12

标签: algorithm big-o nested-loops

找到大哦特征

input: n  

s<-0  
for i<-1 to n^2 do  
  for j<-1 to i do  
    s<-s+i

两个循环迭代n^2次。我不确定是否应该添加或增加循环。现在我认为答案是O(n^4)

5 个答案:

答案 0 :(得分:4)

外部循环i从0到n^2,而内部循环j从1到i

因此,内环具有i的复杂性(内环需要i步,i是变化的)。让我们用IL(i)=i表示内循环的运行时间。

为了获得总运行时间,我们看到内部循环使用不同的“参数”n^2执行i次。因此,我们获得总运行时间:

 n^2           n^2
----          ----
\     IL(i) = \    i 
/             /
----          ----
 i=1           i=1

也就是说,您必须将从1到n^2的所有数字相加。有许多基本教科书解释如何评估这一点。

结果为(n^2)(n^2+1)/2,导致O(n^4)的复杂性过高。

答案 1 :(得分:2)

你说得对,答案是O(n^4)。首先内圈成本i。然后外部循环花费sum(1->p) i = p(p-1)/2,其中p=n^2。这给出了O(n^4)

的费用

答案 2 :(得分:2)

您的论点几乎正确。

循环迭代次数:

1 + 2 + ... + n^2 
= (n^2+1)*(n^2)/2
= (n^4 + n^2)/2

所以答案是Θ(n^4)(作为旁注,它也是O(n^4))。

您可以通过选择三个常量c1c2n0来正式证明:

c1*n^4 <= (n^4 + n^2)/2 <= c2*n^4 forall n >= n0

答案 3 :(得分:0)

由于i的最大值为n^2,因此我们O(n^2) * O(n^2)等于O(n^4)

答案 4 :(得分:0)

您只需查看basic sum formula即可。你的总和不是N,而是N ^ 2给你

n^2(n^2+1)/2

这确实是O(n ^ 4)