在java中快速排序的交换方法
问题描述:
任何人都可以帮助我找出这种交换方法,它是较大的快速排序程序的一部分吗?它应该采用一个数组和两个整数并交换整数指示的索引位置。在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;
}
交换方法目前未定义,我不知道如何让它工作。我曾尝试编写该方法:
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;
}
我也试过,并且我的swap方法调用仍然说“方法swap(T [],int,int)未定义为类型QuickSort”我将方法定义在与private static相同的级别上> int partition(T [] table,int first,int last) –
Teej
不知道它的工作原理,事实证明,我刚刚没有编译过一会儿哈哈。非常感谢 – Teej