如何理解抽象就地合并排序

时间:2015-09-14 08:46:08

标签: sorting merge in-place

我无法理解合并排序。例如,为什么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++];
    }
    }
}

0 个答案:

没有答案