算法_2022_时间&空间复杂度
logn是什么意思_时间复杂度 O(log n) 意味着什么?
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
1、时间复杂度
一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大是,T(n)/f(n)的极限值为不等于零的常熟,则称f(n)是T(n)的同数量级函数,记作T(n )= O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。
复杂度量级(按数量级递增)
- 常量阶
- 对数阶
- 线性阶
- 线性对数阶
- 平方阶、立方阶次方阶
- -----------------上为多项式量级-------下为非多项式量级
- 指数阶
- 阶乘阶
2、空间复杂度
空间复杂度比较常用的有:O(1)、O(n)、O(n²)
3、应用
排序方法 | 平均情况 | 最好情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(n^(1.3—2)) | O(n^1.3) | O(n^2) | O(1) | 不稳定 |
归并排序 | O(n*log2(n)) | O(n*log2(n)) | O(n*log2(n)) | O(n) | 稳定 |
快速排序 | O(n*log2(n)) | O(n*log(n)) | O(n^2) | O(nlog2n) | 不稳定 |
堆排序 | O(n*log2(n)) | O(n*log2(n)) | O(n*log2(n)) | O(1) | 不稳定 |
计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
桶排序 | O(n+k) | O(n) | O(n^2) | O(n+k) | 稳定 |
基数排序 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 稳定 |