解题步骤
- 列出循环趟数t及每轮循环i的变化值
- 找到t与i的关系
- 确定循环停止条件
- 联立两式解方程
- 写结果
例题分析
例一:
i = n*n;
whlie(i != 1)
i = i/2;
第一步:列出循环趟数t及每轮循环i的变化值:
t | 0 | 1 | 2 | 3 |
i |
第二步:找到t与i的关系:
第三步:确定循环停止条件:
第四步:联立第二步第三步两式解方程:
所以得到时间复杂度为:
例二:
x = 0;
while (n>=(x+1)*(x+1))
x = x+1;
第一步:列出循环趟数t及每轮循环x的变化值:
t | 0 | 1 | 2 | 3 | 4 |
x | 0 | 1 | 2 | 3 | 4 |
第二步:找到t与x的关系:
第三步:确定循环停止条件:
第四步:联立第二步第三步两式解方程:
所以得到时间复杂度为:
例三:
int i = 1;
while (i<=n)
i = i *2
第一步:列出循环趟数t及每轮循环i的变化值:
t | 0 | 1 | 2 | 3 | 4 |
i | 0 | 1 | 2 | 3 | 4 |
第二步:找到t与x的关系:
第三步:确定循环停止条件:
第四步:联立第二步第三步两式解方程:
所以得到时间复杂度为:
例四:
int i = 0;
while (i*i*i<=n)
i ++;
第一步:列出循环趟数t及每轮循环i的变化值:
t | 0 | 1 | 2 | 3 | 4 |
i | 0 | 1 | 2 | 3 | 4 |
第二步:找到t与x的关系:
第三步:确定循环停止条件:
第四步:联立第二步第三步两式解方程:
所以得到时间复杂度为:
例五:
y = 0;
while (y+1)*(y+1) <= n
y = y+1;
第一步:列出循环趟数t及每轮循环y的变化值:
t | 0 | 1 | 2 | 3 | 4 |
y | 0 | 1 | 2 | 3 | 4 |
第二步:找到t与x的关系:
第三步:确定循环停止条件:
第四步:联立第二步第三步两式解方程:
所以得到时间复杂度为: