【数据结构】排序算法时间效率、空间效率以及算法稳定性总结

排序算法

  排序是将一组无序的记录序列调整为有序的记录序列的操作,可以方便查找。大部分的排序算法都有两个基本的操作:(1)比较两个关键字的大小.(2)将记录从一个位置移动到另一个位置。

排序算法分类

  根据完成整个排序过程是否需要访问外存可分为内部排序、外部排序。一般进行的是内部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。基于不同的扩大有序序列的方法,内部排序大致可以分为插入排序、快速排序、选择排序、归并排序。

方法思想分类
插入排序每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。直接插入排序、折半插入排序、表插入排序、希尔排序
交换排序比较序列中的记录,并按前小后大(或前大后小)的规则对记录进行交换冒泡排序、一趟快速排序、快速排序
选择排序从无序序列中选出关键字最小的记录,加入到有序序列简单选择排序、树型选择排序、堆排序
归并排序将两个或两个以上的有序序列归并为一个有序性序列2-路归并排序

排序算法的效率评价

  排序算法的好坏一般从时间效率、空间效率、稳定性三个方面衡量。
 (1)时间效率指排序速度,即排序所花费的全部比较次数。
 (2)空间效率指占内存辅助空间的大小。
 (3)稳定性是相同关键字值在排序前后的先后次序是否保持一致。若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。

方法平均时间最差最佳辅助空间稳定性
直接插入
O(n2)
O(n2)
O(n)
O(1)
稳定
冒泡排序
O(n2)
O(n2)
O(n)
O(1)
稳定
直接选择
O(n2)
O(n2)
O(n2)
O(1)
不稳定
堆排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O(1)
不稳定
希尔排序
O(n1.5)
O(1)
不稳定
快速排序
O(nlog2n)
O(n2)
O(nlog2n)
O(nlog2n)
不稳定
归并排序
O(nlog2n)
O(nlog2n)
O(nlog2n)
O(n)
稳定

  参考数据结构对排序算法的总结,本文汇总了排序算法的分类、各类算法的性能评估,后续将详细介绍各类排序算法的思想,并进行Python代码实现。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值