在java中快速排序的交换方法

时间:2016-04-26 15:44:30

标签: 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 {
        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;
}

交换方法目前尚未定义,我不知道如何使其正常工作。我试过写这个方法:

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

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