1.某算法语句执行频度为其时间复杂度为 O(
).
2.设一维数组中有n个数组元素,则读取第 i 个数组元素的平均时间复杂度为 O(1).
3.下列代码中“m++;”的语句频度为( )。
int m = 0, i, j;
for(i = 1; i <= n; i++)
for(j = 1; j <= 2*i; j++)
m++;
解答:
,
内层的for循环执行了 2i 次,外层的for循环 i 执行了 n 次
所以语句频度为
4.下列代码中“x++;”的语句频度为( )。
int x = 0;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
for(int k = 1; k <= j; k++)
x++;
解答:
5.分析下列算法的时间复杂度
x = n; // n > 1
y = 0;
while(x >= (y + 1)*( y + 1))
y++;
解答:假设语句“y++”的执行次数为 f(n),所以
,又x = n,
所以
,得出
,故时间复杂度为 O(
).
6.分析下列算法的时间复杂度
x = 0;
for(i = 1; i < n; i++)
for(j = 1; j <= n-i; j++)
x++;
解答: 当 i = 1 的时候,内层运行了 (n - 1) 次,
当 i = 2 的时候,内层运行了 (n - 2) 次,
当 i = 3 的时候,内层运行了 (n - 3) 次,
.......
当 i = n - 1 (i != n)的时候,内层运行了(n - (n - 1)) 次,
所以加起来就是 (n - 1) + (n - 2) + (n - 3) +.....+ 1 = (n - 1 + 1)(n - 1)/2 = (
- n)/2
故时间复杂度为 O(
).
7.分析下列算法的时间复杂度
i = 1;
while(i <= n)
i = i*3;
解答: 假设语句“i = i*3”的执行次数为 f(n),那么
,故时间复杂度为 O(
).
i 的值依此为1、3、9、27、71.......
8.分析下列算法的时间复杂度
s = 0;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
s += B[i][j];
sum = s;
解答: O(
).
9.分析下列算法的时间复杂度
for(i = 0; i< n; i++)
for(j = 0; j< m; j++)
a[i][j] = 0;
解答:O(nm).
10. 分析下列算法的时间复杂度
x 90; y = 100;
while(y > 0)
if(x > 100) {
x = x -10;
y--;
}
else x++;
解答:O(1). 常量阶