import java.util.*; class MergeSort { public static void mergeSort(int[] a, int from, int to) { if (from >= to) return; int mid = (from + to) / 2; mergeSort(a, from, mid); mergeSort(a, mid + 1, to); merge(a, from, mid, to); } public static void merge(int[] a, int from, int mid, int to) { int[] b = new int[to - from + 1]; int i, j; i = from; j = mid + 1; for (int k = 0; k < b.length; k++) { if (j > to || (i <= mid && a[i] < a[j])) { b[k] = a[i]; i++; } else { b[k] = a[j]; j++; } } for (int k = 0; k < b.length; k++) { a[k + from] = b[k]; } } public static void mergeSort(int[] a) { mergeSort(a, 0, a.length - 1); } public static void main (String[] argv) { int[] a = new int[argv.length]; for (int i = 0; i < argv.length; i++) a[i] = Integer.parseInt(argv[i]); mergeSort(a); System.out.println(Arrays.toString(a)); } }