编辑代码

package Suanfa;

public class exper3_mergeSort {
        public static void main(String[] args) {
            int[] arr = {4, 8, 3, 9, 33, 22, 44, 25};
            mergeSort1(arr,0, arr.length);

        }

        public static void mergeSort1(int[] arr, int start, int end){
            int len = end - start;
            if(len == 1 || len == 0){  //数组元素还剩一个
                return;
            }
            int mid = start + (len / 2);
            //分成多个组合
            mergeSort1(arr, start, mid);
            mergeSort1(arr, mid, end);

            //归并
            mergeSort2(arr, start, mid, end);
        }

        public static void mergeSort2(int[] arr, int start, int mid, int end){
            int[] temp = new int[end - start];

            int i = start;
            int j = mid;
            int index = 0;  //temp数组里面的索引

            while (i < mid && j < end){
                if(arr[i] > arr[j]){
                    temp[index] = arr[j];
                    j++;
                }else{
                    temp[index] = arr[i];
                    i++;
                }
                index++;
            }

            //数组里有剩余数据
            while (i < mid){
                temp[index++] = arr[i++];
            }

            while (j < end){
                temp[index++] = arr[j++];
            }

            //合并数组
            for (int t = 0; t < index; t++) {
                arr[start + t] = temp[t];
            }
            printArray(arr);
        }

        public static void printArray(int[] arr){
        System.out.println("-------------------");
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        System.out.println("------------------");
        }
}