快速排序算法

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1)首先设定一个分解值,通过分界值将数组分为两部分。

(2)将大于分解值的数据集中放在右边,小于分解值的数据放在左边。此时小于分解值的数都在左边,大于分解值的数都在右边。

(3)然后左边和右边的数组可以独立排序。对于左侧的数组数据,又可以取一个分界值,将部分数据分成左右两部分,同样将左边放置较小数,右边放置较大数。右侧数据也类似处理。

(4)重复上述过程,通过递归将左右侧部分进行排序。

代码段:

public static void sun(int []b,int left,int right) {
int f,t;
int ltemp,rtemp;
ltemp=left;
rtemp=right;
f=b[(left+right)/2];
while(ltemp<rtemp) {
while(b[ltemp]<f) {
++ltemp;
}
while(b[rtemp]>f) {
--rtemp;
}
if(ltemp<=rtemp) {
t=b[ltemp];
b[ltemp]=b[rtemp];
b[rtemp]=t;
--rtemp;
++ltemp;
}
}
if(rtemp==ltemp) {
ltemp++;
}
if(left<rtemp) {
sun(b,left,ltemp-1);//递归调用
}
if(ltemp<right) {
sun(b,rtemp+1,right);//递归调用
}

}

原文地址:https://www.cnblogs.com/mianyang0902/p/10626881.html