java 这个循环的时间复杂度为O(logn)

vnzz0bqm  于 2022-10-30  发布在  Java
关注(0)|答案(3)|浏览(188)

已关闭。此问题需要更多的focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
下面是一个简单的Java代码:

while(i>1)
{
    i = i/2;
}

我很难理解如何进行数学计算来知道它的时间复杂度是O(logn)。我如何用简单的方法来证明呢?

r3i60tvu

r3i60tvu1#

你需要多少次将i除以2,直到它变成1?

i / 2n = 1
i = 2n

已知log 2(a)= B意味着2b = a,我们得到

n = log2(i)

因此,循环的复杂度是O(log 2(i))=O(log(i))

ohtdti5x

ohtdti5x2#

i=10个
6/2=5 -〉5/2=2 -〉2/2=1
O(logn)是一个复杂度为O(log 2n)整数运算。

9jyewag0

9jyewag03#

假设i是int,i的二进制表示在每次循环迭代中从右边丢失一位,直到它为0,这意味着迭代的总次数是表示i所需的位数。表示i所需的位数是ceil(lg(i))+1,可以使用基本对数规则的变化和big-Theta的定义将其表示为Theta(log n)。

相关问题