嵌套循环的运行时间(Big O)

时间:2012-01-17 00:28:50

标签: algorithm for-loop big-o

此算法的运行时间是什么:

for i=1 to n^2
    for j=1 to i
        // some constant time operation

我想说O(n ^ 4)但我无法确定。你怎么知道这个?

6 个答案:

答案 0 :(得分:6)

n ^ 4是正确的。内循环平均需要(n ^ 2)/ 2次运行,因为i线性上升到n ^ 2,并且运行(n ^ 2)次。

答案 1 :(得分:2)

你是对的,它是N^4

替换M = N^2。现在你的循环改为:

for i in 0..M
    for j in 0..i

这是您熟悉的O(M^2),因此在反向替换后结果为O((N^2)^2) = O(N^4)

答案 2 :(得分:2)

运行恒定时间操作:

  1 + 2 + 3 + ... + n^2        (n^2 adders)

小于的时间:

  n^2 + n^2 + ... + n^2        (n^2 adders)
= n^2 * n^2
= n^4

所以,显然O(n^4)


要证明它是Θ(n^4),你可以使用liitle math:

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

答案 3 :(得分:0)

使用嵌套循环,Big Oh运行时间乘法。因此外环(N ^ 2)的大哦乘以内部的大哦(N ^ 2)。因此Big Oh是(N ^ 2 * N ^ 2),如果你还记得如何添加类似基数的指数,你会得到N ^(2 + 2)或N ^ 4.

答案 4 :(得分:0)

使用Sigma Notation,您最终会有条不紊地获得增长顺序:

enter image description here

答案 5 :(得分:-1)

n^5 = outer * inner
outer = n^2
inner = n^2 + n^2-1 + n^2-2 +...1