因为是抄书的所以不好投转载,找不到链接直接放原创(°n°)
void qsort(int l,int r)
{
int i,j,mid,p;
i=l; j=r;
mid=a[(l+r) / 2]; //将当前序列在中间位置的数定义为分隔数
do
{
while (a[i]<mid) i++; //在左半部分寻找比中间数大的数
while (a[j]>mid) j--; //在右半部分寻找比中间数小的数
if (i<=j)
{ //若找到一组与排序目标不一致的数对则交换它们
p=a[i];
a[i]=a[j];
a[j]=p;
i++; j--; //继续找
}
}
while (i<=j); //注意这里不能少了等号
if (l<j) qsort(l,j); //若未到两个数的边界,则递归搜索左右区间
if (i<r) qsort(i,r);
}