import java.util.Arrays;
public class mergeSort {
public static void main(String[] args) {
// 需要排序的数据
int arr[] = {32, 27, 86, 44, 12, 56, 22, 77};
// temp 临时存放排序后的数据
int[] temp = new int[arr.length];
// 处理数据进行排序合并
mgSort(arr, 0, arr.length - 1, temp);
// 输出排序合并后的数据
System.out.println(Arrays.toString(arr));
}
/**
* (分解 + 合并)方法
* @param arr 需要排序的数组
* @param left 需要排序的数组的左边索引值
* @param right 需要排序的数组的右边索引值
* @param temp 临时存放数据的数组
*/
public static void mgSort(int arr[], int left, int right, int[] temp) {
if (left < right) {
// 分解 中间的索引
int mid = (left + right) / 2;
// 向左 递归 进行分解
mgSort(arr, left, mid, temp);
// 向右 递归 进行分解
mgSort(arr, mid + 1, right, temp);
// 分解后进行排序合并
merge(arr, left, m