快速排序算法的思想:通过一趟快速排序把需要排的序列分成独立的两部分,其中一部分所有数据都比另一部分所有数据大(小);然后这两部分按同样的方法排序,当每个序列的元素减少到一个的时候,排序结束,整个序列是有序的。此法可以用递归函数实现。
一趟的排序算法为:
1) 设变量i,j; i=最左元素,j=最右元素
2) 以最左元素为参照元素(key)进行比较
3) 从最右边j开始向左找,直到找到小于key的元素,交换
4) 从最左边i开始先右找,直到找到大于key的元素,交换
5) 重复3,4部,直到i>=j 跳出
下面是代码:
void qsort(int s[],int left,int right){
int key=s[left];/*最左边的元素当key*/
int i=left,j=right-1;
int r2l=1;/*right to left*/
if(i>=j) /*只有一个元素时,跳出递归函数*/
return;
while(i<j){/*i=j时跳出*/
if(r2l){//右向左找
if(s[j]<key){/*找到*/
s[i++]=s[j];
r2l=0;//换个方向
}else{
j--;
}
}else{//左向右找
if(s[i]>key){
s[j--]=s[i];
r2l=1;
}else{
i++;
}
}
}
s[i]=key;/*i=j,即是key所在的位置*/
qsort(s,left,i);
qsort(s,i+1,right);
}
本文详细介绍了快速排序算法的基本思想和具体实现过程。通过一趟排序将待排序的序列分为两部分,其中一部分的所有数据都比另一部分的数据要小,再对这两部分分别进行排序,最终得到完全有序的序列。
307

被折叠的 条评论
为什么被折叠?



