各种排序算法的时间空间复杂度

排序方式 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 备注
快速 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(n1)
归并 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(n1)
选择 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(n1)
希尔 O ( n ( 1.3 − 2 ) ) O(n^{(1.3-2)}) O(n(1.32)) 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:仅仅用于记忆
不稳定排序:快选希堆(快速排序,选择排序,希尔排序,堆排序)

你可能感兴趣的:(数据结构与算法)