此算法的运行时间是什么:
for i=1 to n^2
for j=1 to i
// some constant time operation
我想说O(n ^ 4)但我无法确定。你怎么知道这个?
答案 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,您最终会有条不紊地获得增长顺序:
答案 5 :(得分:-1)
n^5 = outer * inner
outer = n^2
inner = n^2 + n^2-1 + n^2-2 +...1