【发布时间】:2015-12-10 04:56:57
【问题描述】:
我无法理解合并排序。例如,为什么 var I 可以大于 var mid?这是不可能的,因为 3 个变量:lo 表示低,hi 表示高,mid 表示平均?
所以我看不到如果 i>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++];
}
}
}
【问题讨论】: