归并排序 java实现

来源:互联网 发布:苹果电脑怎么下软件 编辑:程序博客网 时间:2024/06/07 04:52
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();}}

0 0
原创粉丝点击