, 再进行合并 ;
先局部有序 , 后整体有序 ;
归并排序 与 快速排序 比较 , 其比 快排 多花费
O(n)
的空间 , 其合并两个数组时 , 不能在原数组中进行 ;
快速排序 , 始终都在原数组中进行..., 只涉及到交换数组中的元素 ;
正式由于该额外数组的存在 , 因此归并排序 , 并不是排序的最优算法 ;
算法要点 :
合并数组中 , 创建数组的时机 , 不要放在递归中 , 递归要调用很多次 ,...(int[] A) {
if (A == null || A.length == 0) {
return;
}
// 用于合并数组的额外空间..., 将已经排好序的两侧的数组进行合并
merge(array, start, end, mergeArray);
}
// 合并两个已经排好序的数组
private...void merge(int[] array, int start, int end, int[] mergeArray) {
// 左右两个数组的遍历索引, 初值值为左右两侧的开始索引