快速排序算法(Quick Sort)和冒泡排序算法类似,都是基于交换排序的思想。快速排序对冒泡排序法进行了改进,从而具有更高的执行效率。
快速排序算法通过多次比较和交换实现排序,其排序流程如下:
- 1.首先设定一个分界值将数组分成左右两部分。
- 2.将大于等于分界值的数据集中在数组的右边,小于等于分界值的数据集中到数组的左边。此时左边部分各元素都小于等于分界值,右边部分各元素都大于等于分界值。
- 3.然后,左边和右边的数据可以单独排序。对于左边的数据又可以取一个分界值,将数据分为左右两部分,右侧数据同理。
- 4.重复上述过程,可以看出这是一个递归过程。通过递归将左右两部分数据都排好序后,即整个数组完成排序。
代码实现如下:
public class QuickSort {
public static void main(String[] args) {
int a[]={69,62,89,37,97,17,28,49};
quickSort(a,0,a.length-1);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
public static void quickSort(int a[],int left,int right){
int ltemp=left;
int rtemp=right;
int f=a[(right+left)/2];//取分界值
int t;
while(ltemp<rtemp){
while(a[ltemp]<f){
++ltemp;
}
while(a[rtemp]>f){
--rtemp;
}
if(ltemp<=rtemp){
t=a[rtemp];
a[rtemp]=a[ltemp];
a[ltemp]=t;
++ltemp;
--rtemp;
}
}
if(ltemp==rtemp){
++ltemp;
}
if(left<rtemp){
quickSort(a,left,ltemp-1);//递归调用
}
if(ltemp<right){
quickSort(a,rtemp+1,right);//递归调用
}
}
}