java语言的快速排序算法类型转换出了问题!

我在编写快速排序的代码中出现了类型转换错误,帮我看看哪里出错了?

package imu.question;

import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
          int[] arr = {49,38,65,97,23,22,76,1,5,8,2,0,-1,22};
          System.out.println("排序前:");
          for(int i:arr) {
               System.out.print(i+" ");
          }
                  System.out.println();
                  quickSort(arr,0,arr.length-1);
              System.out.println("排序后:");
              for(int j:arr)
                       System.out.print(j+" ");
    }
private static void quickSort(int[] arr, int low, int high) {
        if(lowint index=getIndex(arr,low,high);
        quickSort(arr,0,index-1);
        quickSort(arr,index+1,high);
        }
    }

    private static int getIndex(int[] arr, int low, int high) {
        int tmp=arr[low];
        while(lowwhile(low && arr[high]>=tmp) {
                high--;
            }
            arr[low]=arr[high];
            while(low && arr[low]<=tmp) {
                low++;
            }
            arr[high]=arr[low];
        }
        tmp=arr[low];
        return low;
    }
}

运行结果如下

img

该回答引用ChatGPT

在quickSort方法中递归调用quickSort方法时,传递的索引应该是index+1和high,而不是0和index-1。因此,quickSort方法应该像这样编写:


private static void quickSort(int[] arr, int low, int high) {
    if (low < high) {
        int index = getIndex(arr, low, high);
        quickSort(arr, low, index - 1);
        quickSort(arr, index + 1, high);
    }
}

这样,每次递归调用时,排序的数组范围都会缩小,直到数组被完全排序为止。