23.10.27 排序方法比较

选择排序方法所需要考虑因素:

  • 时间复杂度
  • 空间复杂度
  • 算法稳定性
  • 算法简单性
  • 待排序记录数n的大小
  • 待排序记录本身信息量的大小
  • 待排序记录关键字的分布情况

各排序时间复杂度及空间复杂度的比较:

各种排序方法性能比较
排序方法平均时间复杂度最好时间复杂度最坏时间复杂度辅助空间复杂度算法稳定性算法简单性
直接插入排序O(n^{2})O(n)O(n^{2})O(1)稳定简单
希尔排序O(nlog_{2}n)O(n^{1.3})O(n^{2})O(1)不稳定改进
冒泡排序O(n^{2})O(n)O(n^{2})O(1)稳定简单
快速排序O(nlog_{2}n)O(nlog_{2}n)O(n^{2})O(log_{2}n)\sim O(n)不稳定改进
简单选择排序O(n^{2})O(n^{2})O(n^{2})O(1)不稳定简单
堆排序O(nlog_{2}n)O(nlog_{2}n)O(nlog_{2}n)O(1)不稳定改进
归并排序O(nlog_{2}n)O(nlog_{2}n)O(nlog_{2}n)O(n)稳定改进
基数排序O(d(n+rd))O(d(n+rd))O(d(n+rd))O(rd)稳定

对于待排记录数n:n越小简单排序方法越合适;n越大改进排序方法越合适。

对于待排记录本身信息量大小:对改进排序算法影响不大;对于简单排序算法,信息量越大对简单选择排序算法越有利,对其他两种不利。

对于待排记录关键字的分布情况:

  1. 当待排记录数n较大,关键字分布比较随机,且对稳定性不做要求时:快速排序;
  2. 当待排记录数n较大,内存空间允许,且要求排序稳定时:归并排序;
  3. 当待排记录数n较大,关键字分布可能出现正序或者逆序的情况,且对稳定性不做要求时:堆排序或归并排序;
  4. 当待排记录数n较大,而只要找出最小的前几个记录时:堆排序或简单选择排序;
  5. 当待排记录数n较小,记录已基本有序,且要求稳定时:之间插入排序;
  6. 当待排记录数n较小,且记录含有数据项较多,所占存储空间较大时:简单选择排序。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值