package Merging;
import java.util.Arrays;
public class MergingDemo {
//测试
public static void main(String[] args) {
int[] arr= {1,2,22,12,11,3,88};
mergeSort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
//递归处理
public static void mergeSort(int[] arr,int low,int high) {
int mid=(low+high)/2;
if(low<high) {
//处理左边
mergeSort(arr,low,mid);
//处理右边
mergeSort(arr,mid+1,high);
//归并处理
mergeing(arr,low,mid,high);
}
}
//归并处理
public static void mergeing(int[] arr,int low,int mid,int high) {
int i=low;
int j=mid+1;
int index=0;
int[] temp=new int[high-low+1];
while(i<=mid && j<=high) {
if(arr[i]<=arr[j]) {
temp[index]=arr[i];
i++;
}else {
temp[index]=arr[j];
j++;
}
index++;
}
while(i<=mid) {
temp[index]=arr[i];
i++;
index++;
}
while(j<=high) {
temp[index]=arr[j];
j++;
index++;
}
for (int k = 0; k < temp.length; k++) {
arr[low+k]=temp[k];
}
}
}
// 输出 [1, 2, 3, 11, 12, 22, 88]
(本文展示的是处理过后的基本实现代码;水平有限,供交流分享,如有错误,还请指教,谢谢~~)