编辑代码

#include <stdio.h>

int findPivotPos(int array[],int arrStart,int arrEnd){
    return arrStart;
}

int partition(int array[],int arrStart,int arrEnd,int pivotPos){
    int pivotValue=array[pivotPos];
    array[pivotPos]=array[arrEnd-1];
    
    int itPivotValueCount=0;
    for (int i=arrStart, temp;i<arrEnd-1;i++){
        if (array[i]<pivotValue){
            temp=array[i];
            array[i]=array[arrStart+itPivotValueCount];
            array[arrStart+itPivotValueCount]=temp;
            itPivotValueCount++;
        }
    }

    array[arrEnd-1]=array[arrStart+itPivotValueCount];
    array[arrStart+itPivotValueCount]=pivotValue;

    return arrStart+itPivotValueCount;
}

void quickSort(int array[],int arrStart,int arrEnd){
    if(arrEnd - arrStart < 2){
        return;
    }
    int pivotPos = findPivotPos(array,arrStart,arrEnd);

    int pivotOrderedPos = partition(array,arrStart,arrEnd,pivotPos);

    quickSort(array,arrStart,pivotOrderedPos);
    quickSort(array,pivotOrderedPos+1,arrEnd);
    
}

int quickSelect(int arr[], int low, int high, int k) {  
    if (low == high) {  
        return arr[low];  
    }  
  
    int pi = partition(arr, low, high,k);  
  
    if (pi == k - 1) {  
        return arr[pi];  
    } else if (pi < k - 1) {  
        return quickSelect(arr, pi + 1, high, k);  
    } else {  
        return quickSelect(arr, low, pi - 1, k);  
    }  
} 


void display(int array[],int arrLen){
    for (int i=0;i<arrLen;i++){
        printf("%d ",array[i]);
    }
}

int main () {
    int array[]={10,8,3,9,5,1,2,7,6,4};
    int flag=quickSelect(array,0,sizeof(array)/sizeof(int),5);
    printf("%d",flag);
    return 0;
}