1 算法时间复杂度概念
时间复杂度表示了算法的执行时间与数据规模之间的增长关系。
一般情况下在代码中的表现是循环语句或调用次数上,比如:for循环、while循环或递归调用等。
2 时间复杂度表现形式
按照执行优劣依次如下(约靠后越复杂度越高):
- 常数:O(1)
- 对数:O(log n)
- 线性:O(n)
- 线性对数:O(n * log n)
- 平方:O(n²)
- 立方:O(n³)
- k次方:O(n^k)
- 指数:O(2^n)
- 阶乘:O(n !)
常见的有:O(1)、O(n)、O(n^2)、O(logn)
3 算法的空间复杂度
表示算法占用的额外存储空间与数据规模之间的增长关系。
常见的空间复杂度:O(1)、O(n)、O(n^2)
4 简单理解
时间复杂度一般表现在一段代码执行所消耗的时间上,对于绝大多数应用来讲,更看重执行时间和效率上。比如将O(n^k)优化成O(log n)后,由原来的2秒到不足1秒执行完毕。具体表现在计算机CPU上。
空间复杂度具体表现在计算机内存上。
空间复杂度相对于时间复杂度来讲,关注度没那么高。