第一种: 首 为 轴 public static void sort1(int[] a,int left,int right){ if(left<right){ int i = left; int j = right; int axis = a[i]; while(i<j) { while(i<j&&a[j]>axis)j--; if(i<j)a[i++]=a[j]; while(i<j&&a[i]>axis)i++; if(i<j)a[j--]=a[i]; } a[i]=axis; sort1(a,left,i-1); sort1(a,i+1,right); } } 第二种:尾 为 轴 public static void sort2(int[] a,int left,int right){ if(left<right) { int q = partition(a,left,right); sort2(a,left,q-1); sort2(a,q+1,right); } } public static int partition(int[] a,int left,int right){ int i = left - 1; int axis = a[right]; for(int j=left;j<=right-1;j++){ if(a[j]<axis) { i = i+1; swap(a,i,j); } } swap(a,i+1,right); return i+1; }