归并排序

归并排序的简单实现

public class MergeSort {

    public static void main(String[] args) {
        int[] arr = {1,0};
        mergeSort(arr, 0, arr.length - 1);
        Zutil.print(arr);
    }

    private static void mergeSort(int[] arr, int st, int end) {
        int m = (st + end) / 2;
        if (st < end) {
            mergeSort(arr, st, m);
            mergeSort(arr, m + 1, end);
            merge(arr, st, m, end);
        }
    }

    private static void merge(int[] arr, int st, int m, int end) {
        int[] temp = new int[(end - st) + 1];
        int l = st;
        int r = m + 1;
        int i = 0;
        while (l <= m && r <= end) {
            temp[i++] = arr[l] < arr[r] ? arr[l++] : arr[r++];
        }
        while (l <= m) {
            temp[i++] = arr[l++];
        }
        while (r <= end) {
            temp[i++] = arr[r++];
        }
        System.arraycopy(temp, 0, arr, st, temp.length);
    }
    
}

 

posted @ 2021-04-14 14:29  旺仔古李  阅读(26)  评论(0)    收藏  举报