各种内排序方法的性能
1.基于比较的内排序
n个记录,初始数据序列有n!种情况
最坏时间复杂度为O(nlog2n)。
同样可以证明平均时间复杂度也为O(nlog2n)。
最好情况是排序序列正序,此时的时间复杂度为O(n)。至少需要比较⌈log2(n!)⌉次比较
如果待排序的表中,存在有多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,则称这种排序方法是稳定的。
![]()
反之,若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。
2.插入排序
主要的插入排序方法:
(1)直接插入排序
(2)折半插入排序
(3)希尔排序直接插入排序
折半插入排序
希尔排序
3.交换排序
常见的交换排序方法:
(1)冒泡排序(或起泡排序)
(2)快速排序冒泡排序
快速排序
4.选择排序
常见的选择排序方法:
(1)简单选择排序(或称直接选择排序)
(2)堆排序简单选择排序
堆排序
5.归并排序
归并排序是多次将相邻两个或两个以上的有序表合并成一个新的有序表。
最简单的归并是将相邻两个有序的子表合并成一个有序的表,即二路归并排序。
6.基数排序
外 排 序
磁盘排序
多路平衡归并
利用败者树实现k路平衡归并过程
最佳归并树