快速排序

来源:互联网 发布:怎么代理淘宝网店步骤 编辑:程序博客网 时间:2024/06/08 08:52
//快速排序算法void QuickSort(ElemType a[],int low,int hight){    if(low<high)                                        //递归出口     //Partition()是划分操作,将表a[low...high]划分为满足上述条件的两个子表     {        int pivotpos = Partition(a,low,high);           //划分         QuickSort(a,low,Pivotpos-1);                    //依次对两个字表进行递归排序         QuickSort(a,pivotpos+1,hight);                       }} int Partition(ElemType a[],int low,int high){    ElemType pivot = a[low];                            //当前表中第一个元素设为枢轴质,对表进行划分     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;                                         //返回存放枢轴的最终位置 }