归并排序
归并排序(Merging Sort) 归并的含义是将两个或两个以上的有序表组合成一个新的有序表。
基本思想:假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到【n/2】个长度为2或1的有序子序列;再两两归并,…,如此重复,直至得到一个长度为n的有序序列为止,这种排序叫2-路归并排序。
说明:归并排序的时间复杂度为O(nlogn),它是一种稳定的排序方法。
各种内部排序方法的比较
排序方法 | 平均时间 | 最坏时间 | 辅助存储 |
---|---|---|---|
简单排序 | O(n²) | O(n²) | O(1) |
快速排序 | O(n㏒n) | O(n²) | O(㏒n) |
堆排序 | O(n㏒n) | O(n㏒n) | O(1) |
归并排序 | O(n㏒n) | O(n㏒n) | O(n) |
基数排序 | O(d(n+rd)) | O(d(n+rd)) | O(rd) |
1. 从平均时间性能而言,快速排序最佳,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。在n较大时,归并排序所需时间较堆排序省,但它所需的辅助存储量最多。
2. 基数排序最适用于n值很大而关键字较小的序列。
3. 从方法稳定性来比较,基数排序是稳定的内排方法,所有时间复杂度为 O(n²)的简单排序法也是稳定的,然而,快速排序、堆排序和希尔排序等时间性能较好的排序方法都是不稳定的。没有哪一种是绝对最优的。