快速排序


快速排序

模板

模板每次选取的枢轴元素为中间的值

//快速排序算法
void quickSort(int a[],int l,int r){
    //递归边界判断
    if(l>=r) return ;
    //初始化指针
    //这里-1和+1是因为后面代码使用了do-while循环结构
    int i=l-1,j=r+1,x=a[i+j>>1];

    while(ix);
        if(i

数据结构课本算法

下面给出的算法没有经过改进,对于基本已经排好序的待排序列来说,算法复杂度较高
可以对下面的算法进行改进,每次选取的枢轴元素为随机选取或者取中间的值

int Partition(int a[],int low,int high){
    int pivot=a[low];
    while(lowpivot) high--;
        a[low]=a[high];
        while(a[low]