【2022统考真题】下列程序段的时间复杂度是( )。
int sum=0;
for(int i=l;i<n;i*=2)
for(int j=0;j<i;j++)
sum++;
这道题容易错选为C,正确答案是B
解答:i=1时循环1次,i=2时循环2次,i=4时循环4次,所以循环次数为1+2+4+...+2的x次方
x表示外层循环次数, ,所以数量级为O(n)
时间复杂度的定义:指令执行总次数的数量级
基本方法:数出指令总执行次数,再确定数量级
时间复杂度主要考察的是循环,循环分为一层循环和多层循环
这个跟最上面的题的区别是内层循环的次数每次都是n