您的位置:首页 > 其它

蓝桥杯算法之快速排序

2018-03-31 17:10 120 查看
快速排序:
快速排序是由冒泡排序改进来的,基本思想是在待排序的N个元素中任取一个元素(通常去第一个)作为基准,把该元素放入适当位置后,数据序列被此元素划分为两部分,所有关键字比该元素小的放到前一部分,所有关键字比该元素大的元素放到后一部分,并把该元素放到两部分中间(将该元素重新放回队列,归位),这称为一趟快排序。之后对两部分重复上述过程,直到每部分内只有一个元素或者为空为止。void quick(int *a,int l,int r)
{
if(l>=r)
return ;
int temp=a[l];///哨兵
int i=l,j=r;
while(i<j)
{
while(i<j)///从右边找到第一个小于哨兵的数a[j],放到a[i]处
{
if(a[j]>=temp)
j--;
else{
a[i++]=a[j];
break;
}
}
while(i<j)///从左向右找到第一个大于哨兵的数a[i],放到a[j]处
{
if(a[i]<=temp)
i++;
else{
a[j--]=a[i];
break;
}
}
}
a[i]=temp;///将哨兵放回队列中
quick(a,l,i-1);///向左边继续排序
quick(a,i+1,r);///向右边继续排序
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: