问题:求如下代码的时间复杂度
for(int i=1;i<n;i=2*i){
cout<<"Hello!"<<endl;
}
解:
第一次循环:i=1
第二次循环:i=2i=2
第三次循环:i=2i=2*2=22
…
第k次循环(最后一次):i=2k-1
最后一次决定了2k-1<n<2k,两边取2的对数,得到:
k-1<log2n<k,也就是:log2n<k<log2n+1
因此:这段代码执行了k次基本操作(打印字符串),即:k=floor(log2n),时间复杂度就是O(log(n))
————————————————
版权声明:本文为CSDN博主「vickqi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vickqi/article/details/113795596