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

教育网编2023-04-07 17:422210

如果您的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)

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

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

解决方法

分析此伪代码的时间复杂度。在右边,我估算每行的运行次数。我不确定是否要使用log n,n log n或仅将n用作while循环。.请帮助

                                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)

这样对吗 ?

评论区