归并排序整体的代码实现与二叉树的后序遍历有异曲同工之处,即先遍历左子树(i.e. 排序[left, mid]数组元素),后遍历右子树(i.e. 排序[mid + 1, right]数组元素),最后遍历根节点(i.e.合并排序后的左、右子树)。
代码实现中涉及到的常用编程思路:
- 递归: 归并排序
sort(array, left, right)
代码实现的整体思路
涉及到树的遍历,一般与递归算法或栈相关
public void mergeSort(int[] array) {
sort(array, 0, array.length - 1);
}
public void sort(int[] array, int left, int right) {
if (left < right) {
int mid = left