一文搞清楚算法复杂度

132 阅读1分钟

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上。

空间复杂度具体表现在计算机内存上。

空间复杂度相对于时间复杂度来讲,关注度没那么高。