分析此伪代码的时间复杂度。在右侧,我对每条线路运行的次数进行了考虑。我不确定是使用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)
这是对的吗?
答案 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