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

排序算法

  排序是将一组无序的记录序列调整为有序的记录序列的操作,可以方便查找。大部分的排序算法都有两个基本的操作:(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代码实现。

你可能感兴趣的:(python,数据结构)