“程序=数据结构+算法”
时间复杂度:程序运行消耗的时间,规定每一个语句消耗时间相同,视为一个时间单元
如何计算一个程序的时间复杂度?
忽略常数项
忽略系数
只保留最高项
for(int i=1;i<=n;i++)//n+1次
for(int j=1;j<=n;j++){//n(n+1)次
c[i][j]=0;//n*n次
for(int k=0;k<=n;k++)//n*n*(n+1)次
c[i][j]=c[i][j]+a[i][j]*b[i][j];n*n*n次
}
T(n)=2n^3+3n^2+1
则T(n)=O(n^3)
常见的时间复杂度:(按从小到大排序)
(1)常数阶O(1)
(2)对数阶O(log2n)
(3)线性阶O(n)
(4)线性对数阶O(nlog2n)
(5)平方阶O(n^2)
(6)立方阶O(n^3)
(7)k次方阶O(n^k)
(8)指数阶O(2^n)
![](https://i-blog.csdnimg.cn/blog_migrate/d84771515a6f6260fccd0db87a0771ae.jpeg)
时间复杂度基本计算规则:
1.基本操作即只有常数项,认为其时间复杂度为O(1)
2.顺序结构,时间复杂度按加法进行计算
3.循环结构,时间复杂度按乘法进行计算
4.分支结构,时间复杂度取最大值
5.判断一个算法效率时,往往只需要关注操作数量的最高次项,其他次要项和常数项可以忽略
6.在没有特殊说明时,我们所分析的时间复杂度都是指最坏时间复杂度