数据结构与算法之归并排
2021-01-09 20:31
标签:color merge 就是 and string code 中间 数据结构与算法 while 归并排 就是一种分治的思想 将某个问题划分为n个小的同规模算法去解决 数据结构与算法之归并排 标签:color merge 就是 and string code 中间 数据结构与算法 while 原文地址:https://www.cnblogs.com/self-crossing/p/12957926.htmlpublic class StudyMergeSort {
/**
* 归并排思路 :
* 将一个数组分割成n个小组 然后每个小组两两比较
*/
public static void main(String[] args) {
int[] array = ArrayUtil.generateRandomArray(20, 20);
ArrayUtil.printArray(array);
mergeSort(array);
System.out.println();
ArrayUtil.printArray(array);
}
public static void mergeSort(int[] arr) {
process(arr,0,arr.length-1);
}
public static void process(int[] arr, int L, int R) {
if(L == R){
return;
}
/** 中间数 */
int M = L + ((R - L) >> 1);
/** 分裂 */
process(arr,L,M);
process(arr,M+1,R);
/** 合并 */
merge(arr,L,M,R);
}
public static void merge(int[] arr, int L, int M, int R){
int i = 0;
int p1 = L;
int p2 = M + 1;
/** 辅助空间 */
int [] help = new int [R - L + 1];
/** 将小的放到辅助空间中 */
while(p1 R){
help[i++] = arr[p1] ];
}
while(p1 M){
help[i++] = arr[p1++];
}
while(p2 R){
help[i++] = arr[p2++];
}
for (int j = 0; j ) {
arr[L+j] = help[j];
}
}
}