您的位置:首页 > 其它

快速排序的理解

2015-12-24 17:29 393 查看
//快速排序实现方法一
voidquick_sort(ints[],intl,intr)//先去第一个元素作为基准,从后面比较
{
inti=l,j=r,base=s[i];//挖坑
while(i<j&&s[j]>base)
{
j--;
}
if(i<j)
{
s[i++]=s[j];//填数
}
while(i<j&&s[i]<base)
{
i++;
}
if(i<j)
{
s[j++]=s[i];
}
s[i]=base;
quick_sort(s,l,i-1);
quick_sort(s,i+1,r);
}

//实现方法二


intpatition(intgArr[],intbegin,intend){
intindex,small;
small=begin-1;
for(index=begin;index<end;index++){//最后一个作为基准,从头开始比较
if(gArr[index]<gArr[end]){
small++;
if(small!=index)
swap(index,small);
}
}
small++;
swap(small,end);
returnsmall;
}
voidswap(intgArr[],inti,intj){
inttmp=gArr[j];
gArr[j]=gArr[i];
gArr[i]=tmp;
}


理解选择标准在头还是尾!


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: