#include <stdio.h>
#include <stdbool.h>
int part(int a[],int start,int end){
int pivot=a[start];
int low=start,high=end-1;
while(low<high){
while(low<high && a[high]>=pivot){
--high;
}
a[low]=a[high];
while(low<high && a[low]<=pivot){
++low;
}
a[high]=a[low];
}
a[low]=pivot;
return low;
}
int quickSort(int a[],int start,int end,int k){
if(start < end){
int pivotpos=part(a,start,end);
if(pivotpos == end-k){
return a[pivotpos];
}else if(pivotpos < k){
quickSort(a,start,pivotpos-1,k);
}else{
quickSort(a,pivotpos+1,end,k);
}
}
}
void print(int a[], int size){
for (int i = 0; i < size; i++){
printf("%d ", a[i]);
}
printf("\n");
}
int main () {
int a[]={4,1,7,8,3,9,2};
printf("%d ",quickSort(a,0,7,5));
printf("\n");
print(a,7);
return 0;
}