Szybki algorytm podziału sortowania

void partition(int *a, int size) {
   int pivot = a[0];
   int left = 0, right = 0;
   for(left = 1, right = size-1; left <= right; left++, right--) {
       if(a[left] >= pivot && a[right] <= pivot){
           swap(left, right, a);
       }
   }
   swap(0, right, a);
}

Napisałem tę metodę, aby podzielić tablicę jako wstępny krok, aby zastosować szybkie sortowanie, przetestowałem ją na tych przykładowych danych:

8 2 5 13 4 19 12 6 3 11 10 7 9

poprawnym wyjściem powinno być:

6 2 5 7 4 3 8 12 19 11 10 13 9

ale rzeczywisty wynik to:

6 2 5 13 4 3 8 12 19 11 10 7 9

Algorytm musi się zamienić13 z7 ale zawodzi z powodu&& warunek w powyższej pętli. Chcę zwiększyćleft tylko, jeżelia[left] >= pivot i dekrementacjaright tylko, jeżelia[right]<= pivot.

questionAnswers(2)

yourAnswerToTheQuestion