编写可有效按降序排序的QuickSort函数(Java)

时间:2019-12-02 14:41:28

标签: java sorting

我正在尝试编写一个 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);
}

0 个答案:

没有答案