各种内部排序方法的比较
1.内部排序的基本策略
各种内部排序按所采用的基本策略可分为插入排序、交换排序、选择排序、归并排序和基数排序,他们的基本策略如下:
(1)插入排序:依次将无序序列中的一个记录,按关键字的大小插入已排好序的一个子序列的适当位置,直到插入所有的记录为止。(直接插入排序、表插入排序、二路插入排序和希尔排序)
(2)交换排序:对于待排序序列中的记录,两两比较记录的关键字,并对反序的两个记录进行交换,直到整个序列中没有反序的记录偶对为止。(冒泡排序、快速排序)
(3)选择排序:不断地从待排序的序列中选取关键字最小的记录,放在已排好序的序列的最后,直到选取的所有记录为止。(简单选择排序、堆排序)
(4)归并排序:利用“归并”技术不断地对待排序记录序列中的有序子序列进行合并,直到合并为一个有序序列为止。
(5)基数排序:按待排序记录的关键字的组成部分从低到高(或从高到低)进行。每次是按记录关键字某一位的值将所有记录分配到相应的桶中,再按桶的编号一次收集记录,最后得到一个有序序列。
2.内部排序方法的性能比较
排序方法 | 平均时间复杂度 | 最坏情况 | 辅助空间 | 稳定性 |
直接插入排序 | O(n^2) | O(n^2) | O(1) | 稳定 |
冒泡排序 | O(n^2) | O(n^2) | O(1) | 稳定 |
直接选择排序 | O(n^2) | O(n^2) | O(1) | 稳定 |
希尔排序 | O(n^1.3) | O(n^1.3) | O(1) | 不稳定 |
快速排序 | O(nlog2^n) | O(n^2) | O(nlog2^n) | 不稳定 |
堆排序 | O(nlog2^n) | O(nlog2^n) | O(1) | 不稳定 |
归并排序 | O(nlog2^n) | O(nlog2^n) | O(n) | 稳定 |
基数排序 | O(d X (rd+n)) | O(d X (rd+n)) | O(rd) | 稳定 |
希尔排序:又称为缩小增量法,是一种分组插入排序方法。