package sort;
import java.util.Arrays;
import test.Main;
public class MergeSort {
public static void sort(int[] arr, int left, int right) {
// 左边界小于右边界的情况下
if (left < right) {
int mid = (left + right) / 2;
sort(arr, left, mid);
sort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
public static void merge(int[] arr, int left, int mid, int right) {
int[] temp = new int[arr.length];
int i = left;
int j = mid + 1;
int k = 0;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= right) {
temp[k++] = arr[j++];
}
k = 0;
for (int a = left; a <= right; a++) {
arr[a] = temp[k++];
}
}
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
}