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