算法复杂度
- 时间复杂度:算法所需计算机工作量
- 空间复杂度:算法所需计算机内存空间
时间复杂度 Time Complexity
name | definition |
---|---|
n | 问题规模 |
T(n) | 对任意n所需的最大运行时间; 算法中基本操作重复执行的次数; 语句频度/时间频度; |
T(n) = O(f(n)) | T ( n ) f ( n ) → k ( k ≠ 0 ) \frac {T(n)} {f(n)} \to k (k\ne0) f(n)T(n)→k(k=0) |
classification | - |
---|---|
常数时间O(1) | T(n)上界是与n无关的确定值; eg.访问数组; |
线性时间O(n) | 对于足够大的n,运行时间增加的大小与输入大小呈线性关系; |
对数时间O(logn) | 每增加一个输入,算法所需额外时间减少; eg.二叉树、二分法; |
幂对数时间 | 对某个常数k,有T(n) = O(logn) |
线性对数时间O(nlogn) | - |
空间复杂度 Space Complexity
算法在存储器上占用的存储空间
classification | - |
---|---|
存储算法本身的存储空间 | |
算法的输入输出数据所占用的存储空间 | |
算法运行时临时占用的存储空间 | S(n) = O(f(n)) |
计算空间复杂度:考虑为局部变量分配的存储空间的大小