给定algorthm的时间复杂度是多少?

时间:2015-05-20 01:23:49

标签: algorithm time-complexity complexity-theory asymptotic-complexity big-theta

x=0
for i=1 to ceiling(log(n))
    for j=1 to i
        for k=1 to 10
            x=x+1

我已经提到了我在这里提出的答案:

enter image description here

我认为时间复杂度是θ(n ^ 2 log(n)),但我不确定我的逻辑是否正确。我非常感谢任何帮助,了解如何进行此类分析!

2 个答案:

答案 0 :(得分:3)

最外层循环将运行 ceil(log n) 次。中间循环取决于i的值。

所以,它的行为将是:

1st iteration of outermost-loop    - 1
2nd iteration of outermost-loop    - 2
.....................................
ceil(log n) iteration of outermost-loop     - ceil(log n)

Innermost循环独立于其他变量,对于每次中间循环迭代,它总是运行10次。

因此,网络迭代

= [1*10 + 2*10 + 3*10 + ... + ceil(log n)*10] 
= 10 * {1+2+...+ceil(log n)}
= 10 * { (ceil(log n) * ceil(log n)+1)/2} times
= 5 * [ceil(log n)]^2 + 5 * ceil(log n)
= Big-Theta {(log n)^2}
= Θ{(log n)^2}.

我希望你清楚这一点。因此,你的答案是错误的。

答案 1 :(得分:-1)

你有三个循环。让我们一一考虑。

最内层循环:它独立于ni,并且总是会运行10次。因此,此循环的时间复杂度为Theta(10)

最外层循环:此循环的时间复杂度非常简单Theta(logn)

中间循环:由于i的值可达logn,此循环的时间复杂度也为O(logn)

整体复杂性:Theta(logn)*O(logn)*Theta(10)O(logn*logn*10)10*O((logn)^2)O((logn)^2)