【发布时间】:2016-04-26 02:29:35
【问题描述】:
以下代码用于快速排序类。在底部,有一个名为 swap 的方法,它应该采用一个数组并交换数组中的两个数字。这在Java中可能吗?换句话说,是否有可能有一个格式为 swap(T[], int, int) 的方法可以在这种情况下工作?我希望我的问题有意义。
public class QuickSort {
public static <T extends Comparable<T>> void sort(T[] table) {
quickSort(table, 0, table.length - 1);
}
private static <T extends Comparable<T>> void quickSort(T[] table, int first, int last) {
if (first < last) {
int pivIndex = partition(table, first, last);
quickSort(table, first, pivIndex - 1);
quickSort(table, pivIndex + 1, last);
}
}
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;
}
【问题讨论】:
-
是的,应该可以正常工作。你试过了吗?
-
他的缩进很糟糕。这是一个
do while循环。
标签: java arrays sorting quicksort swap