1.
x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y–;}
else x++;
解:O(1)。当x=90,y=100,只执行else的语句x++,所以x=91的时候就可以输出。只执行了一次。
2.
void fun4(int N)
{ int count = 0;
for (int k = 0; k < 100; k++) {
++count;
}
printf(“%d\n”, count);
}
解:O(1)。此代码共执行了100次,但因为要推导大O阶,所以时间复杂度为O(1)。
3.
解:O(n)。设当n=3时,此代码共执行了3次。同理当为n时,共执行了n次。所以时间复杂度为O(n).
4.
void fun(int n)
{ int i,j,x=0;
for(i=1;i
for(j=n;j>=i+1;j–){
x++; }
}
}
解:O(n^2)。设n=3时,外层for循环共执行了3次。内层for循环共执行了2次。当n=n时,外层for循环则为n次,内层for循环则为n-1次。T(n)=n(n-1)/2,应为取高阶的执行,所以时间复杂度为O(n^2)。
5.
i=l;k=0;
while(i
k=k+10*i;
i++;
}
解:O(n)。设n=4时,共执行了2次,所以n=n时,共执行n-2次。所以时间复杂度为O(n)。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203385.html原文链接:https://javaforall.net
