private static void merge(Comparable<?> a[], Comparable<?> aux[], int lo, int mid, int hi) { assert Helper.isSorted(a, lo, mid); assert Helper.isSorted(a, mid + 1, hi); for (int k = lo; k <= hi; k++) aux[k] = a[k]; int i = lo, j = mid + 1; for (int k = lo; k <= hi; k++) { if (i > mid) a[k] = aux[j++]; else if (j > hi) a[k] = aux[i++]; else if (Helper.less(aux[j], aux[i])) a[k] = aux[j++]; else a[k] = aux[i++]; } }