System.StackOverflowException:引发了类型为System.StackOverflowException的异常。

时间:2019-05-17 18:41:25

标签: c#

我正在重新学习编程方面的速成课程,并且试图为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.'

0 个答案:

没有答案