这的时间复杂度是多少? :
for(i=m; i>n; i/=2)
假设循环在i <= n处停止。
然后在i = n处停止循环。
我是m / 2 ^ k
那是m / 2 ^ k = n,这就是循环停止的时间。
big-o的含义是什么?
答案 0 :(得分:0)
想象一下m=16
。然后将每个迭代i
减半,取整:16、8、4、2、1、0、0 ...
回想一下log2(x)
是以2为底的对数。 log2(2) = 1
,log2(4) = 2
,log2(8) = 3
等。将数字加倍会使log2值增加1。将数字减半会使它的值减少1。
这意味着循环的每一步都会将log2的值减小1,直到达到n
。
从m
降到n
需要多少步骤?那就是你的答案。