1.时间复杂度
1. 如何计算?
- 找到一个基本操作(最深层循环);
- 分析该基本操作的执行次数x与问题规模n的关系x=f(n);
- x的数量级O(x)就是算法时间复杂度T(n);
## 2.常用技巧
- 加法规则:O(f(n))+O(g(n)) = O(max(f(n),g(n)))
- 乘法规则:O(f(n))*O(g(n)) = O(f(n)*g(n))
- O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2) <O(n3)<O(2n)<O(n!)<O(nn)(常对幂指阶)
## 3.三种复杂度
- 最坏时间复杂度:最坏情况下算法的时间复杂度
- 平均时间复杂度:所有输入示例等概率出现的情况下,算法的期望运行时间
- 最好时间复杂度:最好情况下算法的时间复杂度
注:算法的性能问题只有在很大时才会暴露出来
2.空间复杂度
1. 如何计算?
1.1 普通程序
-
找到所占空间大小与问题规模相关的变量;