Skip to content

算法复杂度

  • 程序执行需要的的计算量和内存空间(跟代码是否间接无关)
  • 复杂度是数量级,不是具体的数值
  • 一般针对一个具体的算法,而不是一个具体的程序

时间复杂度

  • O(1):常数时间复杂度,不管数据量多大,执行时间都是固定的
  • O(logn):对数时间复杂度,数据量增大,执行时间不会线性增长
  • O(n):线性时间复杂度,数据量增大,执行时间会线性增长
  • O(nlogn):线性对数时间复杂度,数据量增大,执行时间会增长
  • O(n^2):平方时间复杂度,数据量增大,执行时间会增长

空间复杂度

  • O(1):常数空间复杂度,不管数据量多大,占用的内存空间都是固定的
  • O(n):线性空间复杂度,数据量增大,占用的内存空间会线性增长
  • O(n^2):平方空间复杂度,数据量增大,占用的内存空间会增长
  • O(logn):对数空间复杂度,数据量增大,占用的内存空间不会线性增长
  • O(nlogn):线性对数空间复杂度,数据量增大,占用的内存空间会增长
  • O(2^n):指数空间复杂度,数据量增大,占用的内存空间会增长
  • O(n!):阶乘空间复杂度,数据量增大,占用的内存空间会增长
  • O(n^n):指数空间复杂度,数据量增大,占用的内存空间会增长
  • O(n^m):多项式空间复杂度,数据量增大,占用的内存空间会增长