Time complexity 此do while循环的时间复杂度是多少?

Time complexity 此do while循环的时间复杂度是多少?,time-complexity,big-o,Time Complexity,Big O,我很难看到这里的模式。 即使插入n的数字,然后绘制出每个基本操作。 提前谢谢 编辑:我想要最坏的情况。第一步是将n除以2。所以你得到了n/2。现在,用2再次除以它,如果n/2>1,则得到n/4。如果n/4>1你再做一次,你会得到n/8,或者最好写成n/(2^3)。。。现在如果n/(2^3)>1你再做一次,你会得到n/(2^4)。。。所以,如果你做了k次,你会得到n/(2^k)。如何计算kto,从而得到n/(2^k)≤ 1?简单: int count=0; do { count++;

我很难看到这里的模式。
即使插入n的数字,然后绘制出每个基本操作。
提前谢谢


编辑:我想要最坏的情况。

第一步是将
n
除以
2
。所以你得到了
n/2
。现在,用
2
再次除以它,如果
n/2>1
,则得到
n/4
。如果
n/4>1
你再做一次,你会得到
n/8
,或者最好写成
n/(2^3)
。。。现在如果
n/(2^3)>1
你再做一次,你会得到
n/(2^4)
。。。所以,如果你做了
k次
,你会得到
n/(2^k)
。如何计算
k
to,从而得到
n/(2^k)≤ 1
?简单:

int count=0;
do
{
    count++;
    n=n/2;

}while (n>1);
因此,您的算法需要
O(ln(n))
迭代才能退出循环


在你的代码中,
k
count

你熟悉对数吗?试试2、4、8、16、32、64……实际上,它是O(1),因为
INT\u MAX
是一个常数,增长非常缓慢。请参阅:
n/(2^k) ≤ 1
n ≤ 2^k
ln(n) ≤ k