gpt4 book ai didi

java - Quicksort Java 代码进入无限循环

转载 作者:行者123 更新时间:2023-12-01 07:48:55 25 4
gpt4 key购买 nike

当我尝试运行下面的快速排序代码时,它会进入无限循环。最后一次迭代将进入无限循环。

class QuickSort {
public static void main(String[] args) {
int arr[] = {10, 7, 8, 9, 1, 5,2};
QuickSort ob = new QuickSort();
ob.sort(arr, 0,arr.length-1);
for(int s:arr){
System.out.print(" "+s);
}
}
int partition(int[] arr,int l,int h){
int piv = arr[h];
int i=l-1;
for(int j=l;j<=h-1;j++){
if(arr[j] <= piv){
i++;
int temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
int tp = arr[i+1];
arr[i+1]=arr[h];
arr[h]=tp;
return i+1;
}

void sort(int[] arr,int l,int h){
while(l<h){
int p = partition(arr, l, h);
sort(arr, l, p-1);
sort(arr, p+1, h);
}

}
}

请帮忙看看哪里出了问题。

最佳答案

使用 if 条件代替 while 循环,如下所示。

if(l<h){
int p = partition(arr, l, h);
sort(arr, l, p-1);
sort(arr, p+1, h);
}

无需在无限 while 循环中递归调用 sort。循环是无限的,因为 lr 在算法中永远不会改变。

希望这有帮助:)

关于java - Quicksort Java 代码进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com