文享日志

快速排序代码

代码

发表于2018年09月05日12:05:45

0条评论 78次阅读

快速排序原理详解请看算法要点概述相关内容


代码如下:

int Partition(int r[] , int first , int end){
    int i = first , j = end ;                //初始化待划分的区间
    while(i < j){
        while(i < j && r[i] <= r[j]) j--;        //右侧扫描
            if(i < j){
                int temp = r[i];
                    r[i] = r[j];
                    r[j] = temp;
                    i++;
            }
        while(i < j &&r [i] <= r[j]) i++;        //左侧扫描
            if(i < j){
                int temp = r[i];
                    r[i] = r[j];
                    r[j] = temp;
                    j--;
            }
        }
        return i;            //返回轴值记录的位置
}

void QuickSort(int r[],int first,int end){
    int pivot;
    if(first < end){
        pivot = Partition(r,first,end);            //划分,pivot是轴值在序列中的位置
        QuickSort(r,first,pivot-1);            //求解子问题1,对左侧子序列进行快速排序
        QuickSort(r,pivot+1,end);              //求解子问题2,对右侧子序列进行快速排序
    }
}


👍 0  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广