#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int partition(vector<int> &A, int begin,int end){
int cmpVal = A[end];
int i = begin-1;
for(int j = begin; j < end; j++){
if(A[j] < cmpVal){
i++;
swap(A[i],A[j]);
}
}
swap(A[end],A[i+1]);
return i+1;
}
void quickSort(vector<int> &A, int begin,int end) {
if(begin < end){
int mid = partition(A,begin,end);
quickSort(A,begin,mid-1);
quickSort(A,mid+1,end);
}
}
int main(){
vector<int> a = {7,5,6,4,9,3,4,6,1};
quickSort(a,0,a.size()-1);
for(int i = 0; i < a.size();i++){
cout<<a[i]<<" ";
}
return 0;
}