时间复杂度
计算时间复杂度的步骤
题型1——一层循环
列出循环趟数t与每轮循环i的值
找到t与i之间的关系
确定停止条件
联立方程,解出时间复杂度
例题1
观察下列算法,计算其时间复杂度
i=n*n;
while(i!=1)
i=i/2;
计算步骤:
循环趟数t:0,1,2,3……
每轮循环i的值:n^2,n^2/2,n^2/4,n^2/8……
找到两者关系:
i=n^2/(2)^t
循环结束条件i=1
联立计算
n^2/(2)^t=1——>
n^2=2^t——>
t=log2n
题型2——两层循环
列出外层循环i的变化值
列出内层循环语句的执行次数
内层循环语句的次数求和,计算结果
例题1
int m=0,i,j;
for(i=1;i<=n;i++)
for(j=1;j<=2*i;j++)
m++;
解:
1.外层循环i的值:1, 2, 3, 4, 5, 6, ……n
2.内层循环的次数:2, 4, 6, 8, 10, 12……2*n
3.求和,等差数列求和:(n(2+2*n))/2
O(n^2)