问题标题: 求快排代码

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者

rt△

我发现我问了很多遍排序,结果没有一个是快排的,网上搜的都很奇怪,所以球quicklysort模板。

注意,快排不是STL的sort,是手写的quicklysort,如果给出sort代码,一定举报!


0
已采纳
张岳恒
张岳恒
资深光能
资深光能

程序:

//框架已省略
void qsort(int le,int ri)
{
     int i=le,j=ri,mid=[(le+ri)/2];
     while(i<=j){   //注意这要有等号    
          while(a[i]<mid)i++; //在左边找大于等于mid的数
          while(a[j]>mid)j--; //在右边找小于等于mid的数
          if(i<=j){
            swap(a[i],a[j]);//交换
            i++;
            j--;//继续找
          }
     }
     if(le<j) qsort(le,j);
     if(i<ri) qsort(i,ri);//分别递归继续排序
}

 

张岳恒在2020-08-05 12:41:17追加了内容

啊,忘记点追答了,别喷我

张岳恒在2020-08-05 14:41:53追加了内容

漏打东西了,重新放上:

void qsort(int le,int ri)
{
     int i=le,j=ri,mid=a[(le+ri)/2];
     while(i<=j){   //注意这要有等号    
          while(a[i]<mid)i++; //在左边找大于等于mid的数
          while(a[j]>mid)j--; //在右边找小于等于mid的数
          if(i<=j){
            swap(a[i],a[j]);//交换
            i++;
            j--;//继续找
          }
     }
     if(le<j) qsort(le,j);
     if(i<ri) qsort(i,ri);//分别递归继续排序
}

 

0
张岳恒
张岳恒
资深光能
资深光能

你等下,我把信息学奥赛一本通上的抄给你(太弱了别喷我

0
董宇昊
董宇昊
初级启示者
初级启示者

不是sort,除此之外,我想不出还有什么快排

0
0
0
陈曦
陈曦
资深天翼
资深天翼

是有“基准数”的那个吗?

陈曦在2020-08-05 10:42:02追加了内容

在《啊哈,算法!》的第一章,第 3 小节

0
贾志骜
贾志骜
新手光能
新手光能

刚学到手写队列qwq,为什么要用手写sort,有什么好处吗,难道STL的sort不香么,手写sort干嘛用的

我要回答