public static void merge(Comparable[] a, int lo, int mid, int hi) {
		int i = lo, j = mid + 1;

		for (int k = lo; k <= hi; k++) {
			aux[k] = a[k];
		}

		for (int k = lo; k <= hi; k++) {
			// ߵԪþȡұߵԪ
			if (i > mid) {
				a[k] = aux[j++];
			}
			// ұߵԪþȡߵԪ
			else if (j > hi) {
				a[k] = aux[i++];
			}
			// ҰߵĵǰԪСߵĵǰԪأȡҰԪ
			else if (less(aux[j], aux[i])) {
				a[k] = aux[j++];
			}
			// ҰߵĵǰԪشڵߵĵǰԪأȡԪ
			else {
				a[k] = aux[i++];
			}
		}
	}