'for(i = m; i> n; i / = 2)'的时间复杂度

时间:2019-03-20 17:33:52

标签: algorithm time-complexity

这的时间复杂度是多少? :

for(i=m; i>n; i/=2)

假设循环在i <= n处停止。
然后在i = n处停止循环。
我是m / 2 ^ k
那是m / 2 ^ k = n,这就是循环停止的时间。
big-o的含义是什么?

1 个答案:

答案 0 :(得分:0)

想象一下m=16。然后将每个迭代i减半,取整:16、8、4、2、1、0、0 ...

回想一下log2(x)是以2为底的对数。 log2(2) = 1log2(4) = 2log2(8) = 3等。将数字加倍会使log2值增加1。将数字减半会使它的值减少1。

这意味着循环的每一步都会将log2的值减小1,直到达到n

m降到n需要多少步骤?那就是你的答案。