归并排序 先分割为两部分 , 然后两边分别排序 , 再进行合并 ;
先局部有序 , 后整体有序 ;
归并排序 与 快速排序 比较 , 其比 快排 多花费
O(n)
的空间 , 其合并两个数组时..., 不能在原数组中进行 ;
快速排序 , 始终都在原数组中进行 , 只涉及到交换数组中的元素 ;
正式由于该额外数组的存在 , 因此归并排序 , 并不是排序的最优算法 ;
算法要点 :
合并数组中 ,...创建数组的时机 , 不要放在递归中 , 递归要调用很多次 , 频繁创建销毁数组 , 很耗费时间和空间 ;
代码示例 :
class Solution {
/**
* 归并排序...int mergeArray[] = new int[A.length];
// 递归调用排序算法
mergeSort(A, 0, A.length...// 左侧排序
mergeSort(array, start, (start + end) / 2, mergeArray);
// 右侧排序
mergeSort