时间复杂度分析。选择运算符来计算一行代码运行的次数

时间:2014-02-01 17:48:41

标签: algorithm analysis pseudocode

分析此伪代码的时间复杂度。在右侧,我对每条线路运行的次数进行了考虑。我不确定是使用log n,n log n,还是仅使用n作为while-loop ..请帮助

                                times
1 sum = 0                        1
2 i = 1                          1  
3 while i ≤ n                 log n + 1
4     for j = 1 to n           n log n
5     sum = sum + j            n log n
6 i = 2i                       log n
7 return sum                     1

这导致:2 n log + 2log n + 4

从而:O(n log n)

这是对的吗?

1 个答案:

答案 0 :(得分:0)

如果你的while循环是:

3 while i < n                 log n + 1
4     for j = 1 to n           n log n
5        sum = sum + j         n log n
6     i = 2i                   log n

然后是的,你在计算复杂性方面是正确的。代码的复杂性确实是O(nlogn)

编辑:
虽然我很好奇你在这里想做什么。您正在计算第一n个元素logn次的总和。

因此返回值类似于n*(n+1)/2 * logn