快速排序也是交换类的排序,是以一个“枢纽”为中心,将序列分成两部分,枢纽的一边全是比它小的,另一边全是比它大的。
package test;
import java.util.Arrays;
public class QuickSort {
public static void sort(int[] a) {
sort1(a, 0, a.length-1);
}
private static void sort1(int[] a, int l, int r) {
int temp;
int i=l,j=r;
if(l<r){
temp = a[l];
while(i!=j){
while(i<j&&a[j]>temp) //从右向左扫描找到一个小于temp的元素
--j;
if(i<j){
a[i]=a[j];
++i;
}
while(i<j&&a[i]<temp)
++i;
if(i<j){
a[j]=a[i];
--j;
}
}
a[j]=temp;
sort1(a,l,i-1);
sort1(a,i+1,r);
}
System.out.println(Arrays.toString(a));
}
public static void main(String[] args) {
int[] a = {4,2,5,1,6,8,3,0,7,9};
System.out.println(Arrays.toString(a));
QuickSort.sort(a);
}
}
小白原创,如有错误请指导改正,未经作者允许,禁止转载。