编辑代码

#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;
}