Я пытался реализовать алгоритм быстрой сортировки с использованием первого элемента массива в качестве опоры. Но мой код не сортирует массив. Я получаю вывод 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;
}