从算法的实现方法和策略选取上给出了两种分类标准:
各类排序算法性能及稳定性分析:
Ø内部排序方法分类:复杂度O(n2)的简单排序方法,O(nlogn)的高效排序方法(比较法的理论下界),O(d*(n+rd))的基数排序方法.
Ø各排序方法各有优缺点,具体选择时考虑稳定性、记录大小(小则简单方法即可)、原始数据是否基本有序、关键字大小等因素。
Ø直接插入排序适合基本有序、n值较小时,基数排序适合关键字较短、n较大、空间充裕、要求稳定时;快速排序适合n大、不要求稳定、分布随机时;堆排序适合n大、关键字分布可能有序、不要求稳定;归并排序适合n大、关键字分布可能有序、要求稳定且内存空间充裕时;如果只选择最小的前几个元素,则简单选择排序优先
Ø理论上可证明基于比较的排序方法可能达到的最快的时间复杂度为O(nlogn);基数排序不是基于“比较”
Ø为避免顺序存储上大量移动记录的时间开销,可考虑用链表作为存储结构的排序有:直接插入排序,归并排序,基数排序。不宜采用链表作为存储结构的排序方法有:折半插入排序,希尔排序,快速排序,堆排序。
Øn较大时
(1)分布随机,稳定性不做要求,则采用快速排序
(2)内存允许,要求排序稳定时,则采用归并排序
(3)可能会出现正序或者逆序,稳定性不做要求,则采用堆排序或者归并排序
Øn较小时
(1)基本有序,则采用直接插入排序
(2)分布随机,则采用简单选择排序,弱排序码不接近逆序,也可以采用直接插入排序