java 中快速排序的交换方法

Swap method for quicksort in java

谁能帮我弄清楚这个交换方法是一个更大的快速排序程序的一部分?它应该采用一个数组和两个整数并交换整数指示的索引位置。

private static <T extends Comparable<T>> int partition(T[] table, int first, int last) {
    T pivot = table[first];
    int up = first;
    int down = last;

    do {
        while ((up < last) && (pivot.compareTo(table[up]) >= 0)) {
            up++;
        }
        while (pivot.compareTo(table[down]) < 0) {
            down--;
        }
        if (up < down) {
            swap(table, up, down);
        } 
    }

    while (up < down);
    swap(table, first, down);
    return down;
}

swap 方法目前未定义,我不确定如何让它工作。我试过写方法:

void swap(T[] array, int a, int b) {
    T temp = array[a];
    array[a] = array[b];
    array[b] = temp;
}

但是我不断收到 T 无法解析为类型的错误。但是当我尝试将类型更改为 int 时,方法在上面调用的地方不起作用。

您需要将通用类型 <T> 添加到您的 swap 方法。像

static <T> void swap(T[] array, int a, int b) {
    T temp = array[a];
    array[a] = array[b];
    array[b] = temp;
}

如果您要为家庭作业以外的任何事情实施快速排序,请不要浪费您的时间。使用 Collections.sort()。