归并排序 java实现

    xiaoxiao2021-03-25  51

    public class Main { public static void merge(int[] a, int l1, int r1, int l2, int r2) { int[] tp = new int[r2 - l1 + 1]; int i = 0; int tpl1 = l1, tpl2 = l2; while (tpl1 <= r1 && tpl2 <= r2) { if (a[tpl1] <= a[tpl2]) { tp[i++] = a[tpl1++]; } else { tp[i++] = a[tpl2++]; } } while (tpl1 <= r1) { tp[i++] = a[tpl1++]; } while (tpl2 <= r2) { tp[i++] = a[tpl2++]; } for (i = 0; i < tp.length; i++) { a[l1 + i] = tp[i]; } } public static void mergesort(int[] a, int l, int r) { if (l >= r) { return; } int mid = (l + r) / 2; mergesort(a, l, mid); mergesort(a, mid + 1, r); merge(a, l, mid, mid + 1, r); } public static void main(String[] args) { int[] a = { 100, 325, 3, 134, 6, 311, 6, 3463, 4631, 6, 45, 745, 7, 3542, 43, 1, 134, 33, 2 }; for (int i : a) { System.out.print(i + " "); } System.out.println(); mergesort(a, 0, a.length - 1); for (int i : a) { System.out.print(i + " "); } System.out.println(); } }
    转载请注明原文地址: https://ju.6miu.com/read-26090.html

    最新回复(0)