quicksort算法抛出stackerflow异常错误
本文关键字:异常 错误 stackerflow 算法 quicksort | 更新日期: 2023-09-27 18:22:30
我已经编写了以下快速排序算法。但它引发了堆栈溢出异常。关于如何解决这个问题有什么建议吗。。
static void Main(string[] args)
{
int[] input={17,12,6,19,23,8,5,10};
QuickSort(input,0,7);
foreach (int item in input)
{
Console.WriteLine(item);
}
}
static void QuickSort(int[] input,int p , int r)
{
if (p<r)
{
int q=Partition(input, p, r);
QuickSort(input, p, q );
QuickSort(input, q, r);
}
}
static int Partition(int [] input,int p,int r)
{
int pivot = input[r];//pivot element
int i = p - 1;
int j = r + 1;
while (true)
{
do
{
i = i + 1;
} while (!(input[i]>=pivot));
do
{
j = j - 1;
} while (!(input[j] <= pivot));
//swap
if (i<j)
{
int temp = input[i];
input[i] = input[j];
input[j] = temp;
}
else
{
return j;
}
}
}
您的QuickSort方法在分区后不会停止,以防它已经排序。
private static void QuickSort(int[] input, int p, int r) {
if (p < r) {
int q = Partition(input, p, r);
if (q < r) {
QuickSort(input, p, q);
QuickSort(input, q, r);
}
}
}