#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void swap(int *a, int *b){
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int A[], int start, int end){
int i= start+1;
int j = i;
int pivot = start;
for(; i<end; i++){
if(A[i]<A[pivot]){
swap(&A[i],&A[j]);
j++;
}
}
if(j<=end){
swap(&A[pivot],&A[j-1]);
}
return j-1;
}
void quick_sort(int A[], int start, int end, int K){
int part ;
if(start <end) {
part = partition(A, start, end);
if(part == K-1){
printf("kth smallest element : %d" , A
[part
]); }
if(part>K-1){
quick_sort(A, start,part, K);
}
else{
quick_sort(A, part+1, end, K);
}
}
return;
}
/* Driver program for the function written above */
int main(){
int array[] = {4,2,1,-7,5,3,8,10,9,6};
int n = sizeof(array)/sizeof(array[0]);
quick_sort(array,0, n, 4);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPG1hdGguaD4KIAp2b2lkIHN3YXAoaW50ICphLCBpbnQgKmIpewogCiAgICBpbnQgdGVtcCA9ICphOwogICAgKmEgPSAqYjsKICAgICpiID0gdGVtcDsKIAp9CmludCBwYXJ0aXRpb24oaW50IEFbXSwgaW50IHN0YXJ0LCBpbnQgZW5kKXsKICAgIGludCBpPSBzdGFydCsxOwogICAgaW50IGogPSBpOwogICAgaW50IHBpdm90ID0gc3RhcnQ7CiAgICBmb3IoOyBpPGVuZDsgaSsrKXsKICAgICAgICBpZihBW2ldPEFbcGl2b3RdKXsKICAgICAgICAgICAgc3dhcCgmQVtpXSwmQVtqXSk7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CiAgICB9CiAgICBpZihqPD1lbmQpewogICAgICAgIHN3YXAoJkFbcGl2b3RdLCZBW2otMV0pOwogICAgfQogICAgcmV0dXJuIGotMTsKfQogCnZvaWQgcXVpY2tfc29ydChpbnQgQVtdLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBLKXsKICAgIGludCBwYXJ0IDsKICAgIGlmKHN0YXJ0IDxlbmQpIHsKICAgICAgICBwYXJ0ICA9ICBwYXJ0aXRpb24oQSwgc3RhcnQsIGVuZCk7CiAgICAgICAgICAgIGlmKHBhcnQgPT0gSy0xKXsKICAgICAgICAgICAgICAgIHByaW50Zigia3RoIHNtYWxsZXN0IGVsZW1lbnQgOiAlZCIgLCBBW3BhcnRdKTsKICAgICAgICAgICAgfQogICAgICAgIGlmKHBhcnQ+Sy0xKXsKICAgICAgICAgICAgcXVpY2tfc29ydChBLCBzdGFydCxwYXJ0LCBLKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgcXVpY2tfc29ydChBLCBwYXJ0KzEsIGVuZCwgSyk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuOwp9Ci8qIERyaXZlciBwcm9ncmFtIGZvciB0aGUgZnVuY3Rpb24gd3JpdHRlbiBhYm92ZSAqLwppbnQgbWFpbigpewogICAgaW50IGFycmF5W10gPSB7NCwyLDEsLTcsNSwzLDgsMTAsOSw2fTsKICAgIGludCBuID0gc2l6ZW9mKGFycmF5KS9zaXplb2YoYXJyYXlbMF0pOwogICAgcXVpY2tfc29ydChhcnJheSwwLCBuLCA0KTsKICAgIHJldHVybiAwOwp9