Abe*_*r D 5 c time-complexity while-loop
while(n>x)
x*=x;
Run Code Online (Sandbox Code Playgroud)
正确的答案是log(log(n)),我可以看到log(n),因为x ^ k> = n是while循环停止的时候.所以我得登录(n),我错过了什么?
PS:给出x = 2.
设a为x的原始值,并假设a> 1.
x> = n表示
a**(2**k) >= n
2**k >= log(n)/log(a)
k >= log2(log(n)/log(a)) = log2(log(n))-log2(log(a))
Run Code Online (Sandbox Code Playgroud)
编辑:(Given x = 2)
如果出现以下情况,您的答案是正确的:
while(n>x)
x*=2;
Run Code Online (Sandbox Code Playgroud)
这意味着每次迭代达到结果的时间都会减少一半。
x但由于每次迭代都会缩短时间并且时间x不断增加,因此您将得到O log(Log(n)).
Log(n)是每次迭代跳过一半的复杂度(B 树)。
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |