Проблема с алгоритмом быстрой сортировки в C # - PullRequest
0 голосов
/ 19 декабря 2010

я написал алгоритм быстрой сортировки в c #, но у него есть проблема: когда я его компилирую, он не работает в некоторых условиях, например, когда я ввожу для сортировки число 12,32,11 в textbox6, он выдает ошибку диапазона, я иду, чтобы отследить это, отладчик показывает, что num [] принял nums [0] = 12, nums [1] = 11, nums [2] = 1

Отредактировано: я изменил условие while, и он знает, что не выдает ошибку вне диапазона, но когда вход 12,32,11, выход 11,12,1

private void button5_Click(object sender, EventArgs e)
    {
        string[] x = textBox6.Text.Split(',');
        int[] nums = new int[x.Length];

        for (int counter = 0; counter < x.Length; counter++)
        {
            nums[counter] = Convert.ToInt32(x[counter]);
        }

        int i = 0;
        int  j = nums.Length;
        int pivot = nums[0];
        do 
        {
            do 
            {
                    i++;
            }
                  while ((i < nums.Length) && (nums[i] < pivot));
            do
                {
                    j--;
                }
while (nums[j]>pivot);
            if (i < j)
            {
                int temp = i;

                nums[i] = nums[j];
                nums[j] = temp;

            }

        }while(i<j);
        int temp1 = nums[0];
        nums[0] = nums[j];
        nums[j] = temp1;
        int pivotpoint = j;
        string QuickSort = "";
        foreach (var n in nums)
           QuickSort += n.ToString() + ",";
        textBox5.Text = QuickSort;

    }

1 Ответ

2 голосов
/ 19 декабря 2010

Ваша проблема в том, что i не проходит проверку в цикле do-while.i будет увеличен за пределы вашего массива nums.Попробуйте изменить условие while следующим образом:

while ((i<nums.Length) && (nums[i]<pivot))

Конечно, вы можете просто использовать Array.Sort(nums);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...