如何计算此循环的最坏情况运行时间?
for(int i=1 ; i * i < n ; i*=2)
{
//do something
}
答案 0 :(得分:1)
由于i = 0
,i*=2
仍然会= 0
,这将永久地为n > 0
答案 1 :(得分:1)
让我们建立它 -
首先:
for (int i = 1; i < n; i *= 2) --> log(n)
然后:
for (int i = 1; i * i < n; i ++) --> sqrt(n)
所以,看起来你的循环会影响log(sqrt(n))
答案 2 :(得分:0)
正式地,您可以使用Sigma Notation进行如下操作: