我无法理解合并排序。例如,为什么var I大于var mid?这是不可能的,因为3个变量:lo表示低,hi表示高,而mid表示平均值?
所以如果我> mid。我就看不到会发生什么。
public static void merge(Comparable[] a, int lo, int mid, int hi) {
int i = lo, j = mid + 1;
for (int k = 0; 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++];
}
}
}