分治法-合并排序和快速排序
分治法是按照以下方案工作的: 将问题的实例划分为同一个问题的几个较小的实例,最好拥有同样的规模 对这些较小的实例求解(一般使用递归方法,但在问题规模足够小的时候,有时会利用另一种算法以提高效率) 如果必要的话,合并较小问题的解,以得到原始问题的解 分治法的流程: 4.1 合并排序 合并排序是成功应用分治技术的一个完美例子(书上说的)。 对于一个需要排序的数组,合并排序把它一分为二,并对每个子数组递归排序,然后把这两个排好序的子数组合并为一个有序数组。 代码实现: /** * 合并排序 * @author xiaofeig * @since 2015.9.16 * @param array 要排序的数组 * @return 返回排好序的数组 * */ public static int[] mergeSort(int[] array){ if(array.length>1){ int[] subArray1=subArray(array,0,array.length/2); int[] subArray2=subArray(array,array.length/2,array.length); subArray1=mergeSort(subArray1); subArray2=mergeSort(subArray2); return merge(subArray1,subArray2