上篇博客介绍了“排序算法(四) - 选择排序”,咱们继续,这篇博客总结一下归并排序。
归并排序(Merge Sorting)是与插入排序,交换排序,选择排序不同的一类排序方法,其不同之处在于要求待排序列是由若干个有序子序列组成。
归并的含义是将两个或两个以上的有序表合并成一个新的有序表。So ,归并排序的基础是合并。
在这里,归并排序还可以细分为,有序序列的合并跟 二路归并排序;
二路归并排序即是将两个有序表合并成一个有序表的排序方法,其基本思想:假设序列中有 n 个记录,可看成是 n 个有序的子序列,每个序列的长度为 1 。首先将每相邻的两个记录合并,得到 [n/2] 个较大的有序子序列,每个子序列包含 2 个记录,再将上述子序列两两合并,得到 [[n/2]/2] 个有序子序列,如此反复,直至得到一个长度为 n 的有序序列为止,排序结束。
来张图片瞅瞅吧
图一:
归并排序算法的时间复杂度为 O(nlog2n)
由于要用到和待排记录等数量的数组 b 来存放结果,所以实现归并排序需要附加一倍的存储开销,二路归并排序是稳定的。
在 n 较大时,归并排序的时间性能优于堆排序,但它所需的辅助存储量较多。按需所用。