分治算法——快速排序(c++)
作者:互联网
这是主要代码(函数名不怎么好听)
用法(假如有n个数):qw(1,n)
void qw(int l,int r)
{
int i=l,j=r;
int mid=a[rand()%(r-l)+l];
while(i<=j)
{
while(a[i]<mid/*a[i]>mid*/)i++;
while(a[j]>mid/*a[j]<mid*/)j--;
if(i<=j)
{
a[0]=a[i];
a[i]=a[j];
a[j]=a[0];
i++;
j--;
}
}
if(l<j)qw(l,j);
if(i<r)qw(i,r);
}
这是从大到小排,反过来就是注释的内容,其他不变(这种排序不稳定)
标签:rand,qw,int,分治,mid,c++,while,排序 来源: https://blog.csdn.net/qq_42989972/article/details/99461385