java - 无法完美实现QuickSort

标签 java arrays algorithm sorting quicksort

我试图在 java 中编写一个简单的方法来对 int[] 执行快速排序,但我总是得到一个在我的结果中不合适的值。

如果能帮助我理解哪里出了问题,我们将不胜感激。下面是我的代码:

public static void quickSort(int[] arr, int left, int right){
    if (left < right){
        int p = partition(arr, left, right);
        quickSort(arr, left, p-1);
        quickSort(arr, p+1, right);
    }
}

public static int partition(int[] arr, int left, int right){
    int pivot = arr[left];
    int l = left+1;
    int r = right;
    while (l < r){
        while (l<right && arr[l] < pivot){
            l++;
        }
        while (r>left && arr[r] > pivot){
            r--;
        }
        if (l < r){
            int temp = arr[l];
            arr[l] = arr[r];
            arr[r] = temp;
        }
    }
    arr[left] = arr[r];
    arr[r] = pivot;         
    return r;
}

最佳答案

您的代码是完美的,但请务必为方法 quickSort 提供正确的值。

        int[] arr = .....;
        int left = 0;
        int right = arr.length - 1;

  public static void quickSort(int[] arr, int left, int right){

关于java - 无法完美实现QuickSort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33789082/

相关文章:

java - 如何使jscrollpane从开始滚动到结束?

java - JButton GUI 程序,其中按钮根据循环迭代而变化

java - 如何避免在 Java 中产生垃圾?

arrays - 使用复选框和 AngularJS 过滤 ng-repeat 列表

algorithm - 红黑树包含过多的黑色节点和过少的红色节点

java - Karate BDD 框架通过简单的配置抛出 NPE

javascript - 将 javascript 数组转换为 HTML 并附加到表中

c - 字符数组和字符串指针有什么区别?

java - 需要将时间戳分成不同的日子

algorithm - 总和为 0 的最大子数组