首页 笔记 图片 查字 
所属分类:其它
浏览:39
内容:

要点:
代码
public class MergeSort {
    public static void main(String[] args) {
        int[] arr = new int[]{9, 5, 2, 7, 12, 4, 3, 1, 15, 11, 0, 12};
        int[] temp = new int[arr.length];
        ms(arr, temp, 0, arr.length - 1);

        for (int i : arr) {
            System.out.println(i);
        }
    }

    static void ms(int[] arr, int[] temp, int l, int r) {
        if (l < r) {
            int m = (l + r) / 2;
            ms(arr, temp, l, m);
            ms(arr, temp, m + 1, r);
            merge(arr, temp, l, m, r);
        }
    }

    static void merge(int[] arr, int[] temp, int l, int m, int r) {
        int li = l;
        int ri = m + 1;
        int p = l;

        while (li <= m && ri <= r) {
            if (arr[li] < arr[ri]) {
                temp[p++] = arr[li++];
            } else {
                temp[p++] = arr[ri++];
            }
        }

        while (li <= m) {
            temp[p++] = arr[li++];
        }
        while (ri <= r) {
            temp[p++] = arr[ri++];
        }

        while (l <= r) {
            arr[l] = temp[l];
            l++;
        }
    }
}