时间复杂度
- 时间复杂度是用来估计算法运行时间的一个式子(单位)
- 一般来说,时间复杂度高的算法比复杂度低的算法慢
- 常见的时间复杂度O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^2logn)<O(n^3)
- 复杂问题的时间复杂度O(n!)<O(2^n)<O(n^n)
快速判断算法的时间复杂度
- 确定问题规模n
- 循环减半过程➡logn
- k层关于n的循环➡n^k
- 复杂情况根据算法执行过程判断
空间复杂度
- 空间复杂度是用来评估算法内存占用大小的式子
- 表示方式与时间复杂度一样
- 算法使用了几个变量:O(1)
- 算法使用了长度为n的一维列表:O(n)
- 算法使用了m行n列的二维列表:O(mn)
- “空间换时间”