本文将围绕代码从多个方面分析归并算法,归并的操作很简单,稍加思考便能深刻理解。

1、算法思想:

要将一个数组排序,可以(递归地)将数组分成两半分别排序,然后将两边归并起来。归并算法最吸引人的地方是它能保证将任意长度为N的数组排序的时间与NlgN成正比。
主要缺点是需要与N成正比的额外空间。
(示意图1)

2、原地归并的抽象方法

实现归并最直截了当的方法是将两个数组归并到第三个数组,实现的方法很简单,从左到右逐一比较两数组的第一位元素,将小的一个放入第三个数组(假设两数组已经有序),完成操作后第三个数组就是有序的。了解了思路,我们直接看代码。