我正在尝试查找此代码运行的次数。在右边,我尝试了代码。我不确定循环。这是代码:
times
sum = 0 1
i = 1 1
while i ≤ n log n + 1
sum = sum + i n log n
i = 2i log n
return sum 1
=> n log n + 2 log n + 4
从而:O(n log n)
这是正确的吗?
答案 0 :(得分:2)
不,您的分析不正确。请注意,内部循环的每次迭代都会执行O(1)工作,因此可以通过将循环迭代次数乘以O(1)来找到总时间复杂度。
在这种情况下,循环运行O(log n)次迭代,因为在超过n之前我只能加倍O(log n)次。因此,总时间复杂度为O(log n)。
希望这有帮助!