【发布时间】:2021-06-12 08:02:22
【问题描述】:
我正在尝试使用递归对快速排序进行编码,但出现堆栈溢出错误。这是第二个递归函数给出的连续错误。我就是想不通。
public class QuickSortRec {
public static void quicksort(int input[],int a,int b)
{
if(a<b)
{
int pivotpos=partition(input,a,b);
quicksort(input, a,pivotpos-1);
quicksort(input, pivotpos+1,b);
}
}
private static int partition(int input[],int a,int b)
{
int pivot=input[a];
int count=0;
for(int i=a+1;i< input.length;i++)
{
if(input[i]<pivot)
{
count++;
}
}
int temp=input[a];
input[a]=input[count];
input[count]=temp;
for(int i=0;i<count;i++)
{
if(input[i]>pivot)
{
for(int j=input.length-1;j>pivot;j--)
{
if(input[j]<pivot)
{
temp=input[i];
input[i]=input[j];
input[j]=temp;
}
}
}
}
return count;
}
public static void main(String[]args)
{
int arr[]={6,2,10,8,15,3,4};
int a=0;
int b=arr.length-1;
quicksort(arr,a,b);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i]+" ");
}
}
}
【问题讨论】: