排序算法的稳定性及其汇总-------排序6

下面是一个总的表格,大致总结了我们常见的所有的排序算法的特点。
 

排序法  平均时间 最差情形 稳定度 额外空间 备注
冒泡  O(n2)   O(n2)  稳定 O(1) n小时较好
交换   O(n2)   O(n2) 不稳定 O(1) n小时较好
选择  O(n2)  O(n2) 不稳定 O(1) n小时较好
插入  O(n2)  O(n2) 稳定 O(1) 大部分已排序时较好
基数 O(logRB) O(logRB) 稳定 O(n)

B是真数(0-9),

R是基数(个十百)

Shell O(nlogn) O(ns) 1<s<2 不稳定 O(1) s是所选分组
快速 O(nlogn) O(n2) 不稳定 O(nlogn) n大时较好
归并 O(nlogn) O(nlogn) 稳定 O(1) n大时较好
O(nlogn) O(nlogn) 不稳定 O(1) n大时较好

介绍一下工程中的综合排序算法:

当n小于等于60,选择插入排序,当n很大时,需要排序的是基本数据类型采用快速排序,需要排序的是应用数据类型采用快速排序 

有关排序问题的补充:

1,归并排序的额外空间复杂度可以变成O(1),但是非常难,不 需要掌握,可以搜“归并排序 内部缓存法”

2,快速排序可以做到稳定性问题,但是非常难,不需要掌握, 可以搜“01 stable sort”

3,有一道题目,是奇数放在数组左边,偶数放在数组右边,还 要求原始的相对次序不变,碰到这个问题,可以怼面试官。面试 官非良人。

猜你喜欢

转载自blog.csdn.net/qq_43193797/article/details/86742978