我在编写快速排序的代码中出现了类型转换错误,帮我看看哪里出错了?
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;
}
}
运行结果如下
该回答引用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);
}
}
这样,每次递归调用时,排序的数组范围都会缩小,直到数组被完全排序为止。