排序方式 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 | 备注 |
---|---|---|---|---|---|---|
快速 | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n 2 ) O(n^2) O(n2) | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( l o g 2 n ) O(log_2n) O(log2n) | 不稳定 | 最坏比较次数 n ( n − 1 ) 2 \frac {n(n-1)} 2 2n(n−1) |
归并 | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n ) O(n) O(n) | 稳定 | |
堆 | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( n l o g 2 ( n ) ) O(nlog_2(n)) O(nlog2(n)) | O ( 1 ) O(1) O(1) | 不稳定 | |
冒泡 | O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) | O ( n ) O(n) O(n) | O ( 1 ) O(1) O(1) | 稳定 | 最坏比较次数 n ( n − 1 ) 2 \frac {n(n-1)} 2 2n(n−1) |
选择 | O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) | O ( 1 ) O(1) O(1) | 不稳定 | |
插入 | O ( n 2 ) O(n^2) O(n2) | O ( n 2 ) O(n^2) O(n2) | O ( n ) O(n) O(n) | O ( 1 ) O(1) O(1) | 稳定 | 最坏比较次数 n ( n − 1 ) 2 \frac {n(n-1)} 2 2n(n−1) |
希尔 | O ( n ( 1.3 − 2 ) ) O(n^{(1.3-2)}) O(n(1.3−2)) | O ( n 2 ) O(n^2) O(n2) | O ( n ) O(n) O(n) | O ( 1 ) O(1) O(1) | 不稳定 | |
基数 | * O ( d ( n + r ) ) O(d(n+r)) O(d(n+r)) | * O ( d ( n + r ) ) O(d(n+r)) O(d(n+r)) | * O ( d ( n + r ) ) O(d(n+r)) O(d(n+r)) | * O ( r ) O(r) O(r) | 稳定 | *d为位数,r为基数 |
计数 | O ( n + k ) O(n+k) O(n+k) | O ( n + k ) O(n+k) O(n+k) | O ( n + k ) O(n+k) O(n+k) | O ( n + k ) O(n+k) O(n+k) | 稳定 | k是整数的范围 |
note:仅仅用于记忆
不稳定排序:快选希堆(快速排序,选择排序,希尔排序,堆排序)