快速排序实现大量数据

时间:2016-05-23 13:11:28

标签: c# algorithm sorting data-structures quicksort

我有这个快速排序实现,使用左边作为其轴,当传递一个10240随机数的数组时,它给出了一个例外。当传递1024个随机数的数组时,它会正常排序我的数组而不会产生异常。

  

System.StackOverflowException未处理HResult = -2147023895
  Message =抛出了类型'System.StackOverflowException'的异常。   的InnerException:

Array (
     0 = > array('a1', 'a11', 'a111'),
     1 = > array('b1', 'ba11', 'b111'),
     2 = > array('c1', 'c11', 'c111'),
)

主程序

 public int[] SortQuick(int[] arr, int left, int right)
    {
         if (left < right)
        {
            int pivot = Partition(arr, left, right);
            if (pivot > 1)
                SortQuick(arr, left, pivot - 1);
            if (pivot + 1 < right)
                SortQuick(arr, pivot + 1, right);
        }
        return arr;
    }


    public int Partition(int[] numbers, int left, int right)
    {
        int pivot = numbers[left];
       while (true)
        {
            while (numbers[left] < pivot)
                left++;
            {
                while (numbers[right] > pivot)
                    right--;
                if (left < right)
                {
                    int temp = numbers[right];
                    numbers[right] = numbers[left];
                    numbers[left] = temp;
                }
                else
                {
                    return right;
                }
            }
        }
    }

aGen是一个生成随机数的类。

0 个答案:

没有答案