import java.util.Arrays; public class QuickSort { //三数取中法。取出不大不小的那个位置 public static int getPivotPos(int[] a,int low,int high) { int mid=(low+high)/2; int pos=low; if(a[mid]<a[low]) { int temp=a[low]; a[low]=a[mid]; a[mid]=temp; } if(a[high]<a[low]) { int temp=a[high]; a[high]=a[low]; a[low]=temp; } if(a[high]<a[mid]) { int temp=a[high]; a[high]=a[mid]; a[mid]=temp; } pos=mid; return pos; } //划分,取出枢纽位置 public static int partition(int[] a,int low,int high) { int pivotpos=getPivotPos(a,low,high); int pivot=a[pivotpos]; int temp=pivot; a[pivotpos]=a[low]; a[low]=temp; while(low<high) { while(low<high&&a[high]>=pivot) high--; a[low]=a[high]; while(low<high&&a[low]<=pivot) low++; a[high]=a[low]; } a[low]=pivot; return low; } //快排 public static void quickSort(int[] a,int low,int high) { if(low<high) { int pivotpos=partition(a,low,high); quickSort(a,low,pivotpos-1); quickSort(a,pivotpos+1,high); } } //重载快排 public static void quickSort(int[] a) { if(a.length==0) return; int low=0; int high=a.length-1; quickSort(a,low,high); } public static void main(String[] args) { int[] a= {12,32,24,99,54,76,48}; quickSort(a); System.out.println(Arrays.toString(a)); } }