示例代码展示
1.for(i=1;i<=n;i++){ //n+1次
2. for(j=1;j<=n;j++){ //n(n+1)次
3. c[i][j]=0; //n*n次
4. for(k=0;k<n;k++) //n*n*(n+1)次
5. c[i][[j]=c[i][[j]+a[i][j]*b[k][j]; //n*n*n次
6. }
7.}
示例代码为两个n × n矩阵相乘的算法
- 我们把算法所耗费的时间定义为该算法每条语句的频度之和:
T(n)=2n3 +3n2 2n+1
算法的时间复杂度例题
1. i=1;
2. while(i<=n)
3. i=i*2;
- 若循环执行一次:i=1*2=2,
- 若循环执行一次:i=2*2=22,
- 若循环执行一次:i=2*2=23,
- 若循环执行X次:i=2x
设语句 i+i*2 执行次数为x次,
由循环条件i<=n,所以2x <=n,所以 x<=log2 n
2f(n) <=n,即f(n)<=log2 n,取最大值,f(n) = log2 n,
所以该程序段的时间复杂度T(n)=O(log2 n)。