给出以下算法的时间复杂度

void fun2(int n)
{
int i=1,k=100;
while(i<n)
{
i=i*10;
k=k+1;
}
}
时间复杂度为_
请给出具体解释 有追加!!

第1个回答  2011-06-21
O(log10(n))
每次循环,i*10,直到n
可以理解为,i=1,每次循环n/10
那就是O(log10(n))。。。本回答被提问者采纳
第2个回答  2011-06-19
时间复杂度就看你循环了多少次,此题循环为n/10次(因为循环里i是10倍的增加的,故为o(n/10);
第3个回答  2011-06-19
时间复杂度就看你循环了多少次,循环一次就是O(n),循环两次就是O(n^2),……
第4个回答  2011-06-20
1、s的增长序列为:1,2,3,4,……,所以循环loop次后s=1+2+3+……+loop,s=n时结束循环。
由:1+2+3+……+loop=n 得到: loop=O(sqrt(n));
2、循环loop次后, i=2^loop, 由i=n,得到: loop=log(n);

就是看循环执行了多少次,看执行多少步后i满足循环退出的条件。
第5个回答  2011-06-19
O(N) 就一个循环嘛。
相似回答