编辑代码

#include <stdio.h>

//返回基准值在数组里面的位置
int findPivotPos(int array[],int arrStart,int arrEnd){
    int mid=arrStart+arrEnd/2;

}
//根据基准值进行分区,把比基准值小的元素放它的左边,大的元素放它的右边
//返回值:基准值在排序后的位置
int partition(int array[],int arrStart,int arrEnd,int pivotPos){
    int pivotValue=array[pivotPos];
    int array[pivotPos]=array[arrEnd-1];

    //遍历找出数组中所有比基准值小的元素,并且按找到顺序从左到右放到数组
    int ltPivotCount=0;
    for(int i=arrStart;i<arrEnd-1;i++){
        if(array[i]<pivotValue){
            int temp=array[arrStart+ltPivotCount];
            array[arrStart+ltPivotCount]=array[i];
            array[i]=temp;
            ltPivotCount++;
        } 
    }
    array[arrEnd-1]=array[arrStart+ltPivotCount];
    array[arrStart+ltPivotCount]=pivotValue;

    return ltPivotCount;
    //避免数组空洞,把基准数和数组最后一个元素交换;


}
//arrEnd是数组的长度,也就是数组最后一个元素的下标+1
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 main () {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
    printf("Hello world!     - c.jsrun.net.");
    return 0;
}