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.
int sum=0;
for(int i = 1;i <= n;i++)
sum += i;
解:O(n)。设当n=3时,此代码共执行了3次。同理当为n时,共执行了n次。所以时间复杂度为O(n).
4.
void fun(int n)
{ int i,j,x=0;
for(i=1;i<n;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<n-l){
k=k+10*i;
i++;
}
解:O(n)。设n=4时,共执行了2次,所以n=n时,共执行n-2次。所以时间复杂度为O(n)。