我正在尝试编写一个 QuickSort ,以有效地对ArrayList
进行降序排序。我正确地对ArrayList
进行了排序,但是我遇到了严重的速度问题。要从升序切换到降序,我只是在分区方法的比较中将<
更改为>
。
想知道是否有任何东西会减慢速度吗?
这是我的代码,
谢谢。
private static <V extends Comparable> void quickSort(ArrayList<V> values, int low, int high) {
// Base case
if(low >= high) {
return;
}
int pi = partition(values, low, high);
quickSort(values, low, pi-1);
quickSort(values, pi+1, high);
}
// Helper method, sets the partition in quickSort and makes swaps
private static <V extends Comparable> int partition(ArrayList<V> values, int low, int high) {
V pivot = values.get(high);
int i = low-1;
for(int j = low; j<=high-1; j++) {
if(values.get(j).compareTo(pivot) > 0) {
i++;
swap(values, i, j);
}
}
swap(values, i+1, high);
return i+1;
}
// Helper method to swap elements at two indices of an ArrayList
private static <V extends Comparable> void swap(ArrayList<V> arr, int i, int j) {
K tmp = arr.get(i);
arr.set(i, arr.get(j));
arr.set(j, tmp);
}