Реализация быстрой сортировки с использованием первого элемента в качестве сводной не работает - PullRequest
0 голосов
/ 26 октября 2019

Я пытался реализовать алгоритм быстрой сортировки с использованием первого элемента массива в качестве опоры. Но мой код не сортирует массив. Я получаю вывод 10 12 8 15 16 9. Может кто-нибудь сказать мне, что я делаю не так?

#include <iostream>
using namespace std;

void swap_elements(int *x,int*y){
    int temp=*x;
    *x=*y;
    *y=temp;
}
int split(int first,int last,int arr[]){
    int pivot=first;
    int i=first+1;
    int j=last;
    while (i>j){
            while(arr[i]<=arr[pivot]&&i<=j){
            i++;
        }
        while(arr[j]>=arr[pivot] && j>=i){
            j--;
        }

        swap_elements(&arr[i],&arr[j]);
}
swap_elements(&arr[pivot],&arr[j]);
return j;



}
void quick_sort(int first,int last,int arr[]){
    if (first<last){
    int midpoint=split(first,last,arr);
    quick_sort(first,midpoint-1,arr);
    quick_sort(midpoint+1,last,arr);

    }
   }



int main()
{
    int arr[6]={9,10,12,8,15,16};
    quick_sort(0,5,arr);
    for(int i=0;i<6;i++){
         cout<<arr[i]<<" ";
}

return 0;
}
...