算法复杂度
- 程序执行需要的的计算量和内存空间(跟代码是否间接无关)
- 复杂度是数量级,不是具体的数值
- 一般针对一个具体的算法,而不是一个具体的程序
时间复杂度
- 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):多项式空间复杂度,数据量增大,占用的内存空间会增长