//给定俩个已经排好的数组
public class MergeSort {
public static void main(String[] args) {
int[] arr = {1, 4, 7, 8, 3, 6, 9};
sort(arr);
}
public static void sort(int[] arr) {
merge(arr);
}
public static void merge(int[] arr) {
int[] temp = new int[arr.length];//开辟一块新空间,数组名为temp
int i = 0;//用于遍历左数组
int mid = arr.length / 2;//分割的位置
int j = mid + 1;//用于遍历右数组
int k = 0;//用于遍历新数组
while (i <= mid && j < arr.length) {
temp[k++] = arr[i] <= arr[j] ? arr[i++] : arr[j++];//最简化
// if(arr[i]<=arr[j]){//加入等于号可以更稳定
// temp[k++]=arr[i++];//先赋值后++
// }else{
// temp[k++]=arr[j++];
// }
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j < arr.length) {
temp[k++] = arr[j++];
}
print(temp);
}
public static void print(int[] arr) {
System.out.print("{");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ", ");
}
}
System.out.print("}");
}
}