我正在重新学习编程方面的速成课程,并且试图为Quick Sort编写代码。对于我编写的数组,代码可以很好地运行,但是当我开始随机分配东西时,就会抛出错误。
我认为该错误可能与数组中已经存在的重复值有关
public static void SortArray<T>(T[] array) where T : IComparable<T>
{
QuickSort(array, 0, array.Length - 1);
}
public static void QuickSort<T>(T[] array, int left, int right)
where T : IComparable<T>
{
int i = left;
int j = right;
var pivot = array[(left + right) / 2];
while (i <= j)
{
while (array[i].CompareTo(pivot) < 0)
{
i++;
}
while (array[j].CompareTo(pivot) > 0)
{
j--;
}
if (i <= j)
{
var temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
if (left < j)
{
QuickSort(array, left, i);
}
if (i < right)
{
QuickSort(array, i, right);
}
}
正在抛出System.StackOverflowException: 'Exception of type 'System.StackOverflowException' was thrown.'