java中快速排序的Swap方法

java中快速排序的Swap方法,java,arrays,quicksort,swap,Java,Arrays,Quicksort,Swap,有人能帮我找出这个交换方法吗?它是一个更大的快速排序程序的一部分?它应该取一个数组和两个整数,并交换由整数指示的索引位置 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 { w

有人能帮我找出这个交换方法吗?它是一个更大的快速排序程序的一部分?它应该取一个数组和两个整数,并交换由整数指示的索引位置

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;
}

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

您需要将泛型类型
添加到
交换方法中。差不多

static <T> void swap(T[] array, int a, int b) {
    T temp = array[a];
    array[a] = array[b];
    array[b] = temp;
}
静态无效交换(T[]数组,int a,int b){
温度=阵列[a];
数组[a]=数组[b];
数组[b]=温度;
}

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

我也尝试过这样做,但我对swap方法的调用仍然表示“类型QuickSort的方法swap(T[],int,int)未定义”。我将该方法定义在与私有静态int分区(T[]table,int first,int last)相同的级别上,尽管它实际上可以工作,原来我已经有一段时间没编译了,哈哈。非常感谢
static <T> void swap(T[] array, int a, int b) {
    T temp = array[a];
    array[a] = array[b];
    array[b] = temp;
}