Получение неправильного ответа при использовании «pivot» при замене вместо «arr [high]» в быстрой сортировке - PullRequest
0 голосов
/ 19 июня 2019

Я проходил быструю сортировку, когда обнаружил эту проблему.В моем коде, когда я использую 'pivot', чтобы переместить pivot в правильное место вместо 'arr [high]', я получаю неправильный ответ (это в закомментированных строках).

хотя pivot равен arr [high] и нигде не переназначен

Я пытался визуализировать его с помощью печати, но не могу понять, как это сделать.

    {
        int pivot = arr[high];
        int l = low-1;
        for(int r = low; r<high; r++)
        {

            if(arr[r]<=pivot)
            {
                l++;
                int temp = arr[r];
                arr[r]=arr[l];
                arr[l]=temp;
            }
        }
        int t = arr[l+1];
        arr[l+1]=arr[high];
        arr[high]=t;
        /*
        arr[l+1]=pivot;
        pivot=t;
        */
        System.out.println("pivot="+pivot+" high="+arr[high]);

        return l+1;
    }

Это вывод при использовании arr [high].

2 3 3 4 1
Your Output is:
pivot=1 high=1
pivot=2 high=2
pivot=3 high=3
1 2 3 3 4 0

Это вывод при использовании pivot для свопинга.

2 3 3 4 1
Your Output is:
pivot=2 high=1
pivot=3 high=1
pivot=3 high=1
pivot=4 high=1
1 1 1 1 1 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...