常见排序算法

1.基于桶的排序

  1. 桶排序
    简介:
  • 判断数据的范围,将数据范围划分为桶
  • 将数据放入桶中
  • 桶内进行任意排序
  • 桶的个数最多时为计数排序
    应用:
  1. 计数排序
    简介:
  • 选取数组中的最大值max和最小值min
  • 使用一个大小为max - min + 1的数组help,遍历原数组,某个值出现一次,便在数组中加1
  • 根据help中出现的个数,给出新数组的结果
    应用:
  1. 基数排序
  • 可以用于任意进制,常用于10进制,高位不足时补0
  • 先根据个位进行稳定的排序算法
  • 依次到高位进行稳定的排序算法
  • 当只有一位数时为计数排序

2.基于插入的排序排序

  1. 插入
  2. 希尔
    简介:
    增量序列,如[len/2,len/4,……1]
    当序列为len/2时,假如有10个元素,那么共分为5个组(第1个元素和第6个元素是一组,第2个元素和第7个元素是一组……)将每个组进行插入排序;下一次增量变小,每个组内元素变多,再进行插入排序,直到增量为1,进行一次所有元素的插入排序。复杂度为O(n^1.3)------O(n^2)
    应用:

5.基于选择的排序

  1. 简单选择排序
  2. 桶排序

4.基于交换的排序

  1. 快排
  2. 冒泡

5.基于归并的排序

  1. 二路归并
  2. 多路归并

6. 应用场景

(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
 若要求排序稳定,则可选用归并排序。但前面介绍的从单个记录起进行两两归并的排序算法并不值得提倡,通常可以将它和直接插入排序结合在一起使用。先利用直接插入排序求得较长的有序子序列,然后再两两归并之。因为直接插入排序是稳定 的,所以改进后的归并排序仍是稳定的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容