2

如何计算此循环的最坏情况运行时间?

for(int i=1 ; i * i < n ; i*=2)

{
     //do something
}
4

3 回答 3

1

因为i = 0i*=2将仍然= 0,这将永远持续下去n > 0

于 2012-10-21T21:43:03.363 回答
1

让我们建立起来——

第一的:

for (int i = 1; i < n; i *= 2) --> log(n)

然后:

for (int i = 1; i * i < n; i ++) --> sqrt(n)

所以,看起来你的循环会影响 log(sqrt(n))

于 2012-10-21T21:50:10.757 回答
0

形式上,您可以使用 Sigma 表示法进行如下操作:

在此处输入图像描述

于 2014-04-05T00:52:57.260 回答