public class mysort { public static void main(String agrs[]) { int[] a = {2, 2, 3, 5, 3, 86, 43, 765, 4326, 1, 43, 66, 43}; int start = 0; int end = a.length - 1; sort(a, start, end); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } public static int part(int[] a, int start, int end) { //固定的切分方式 int key = a[start]; while (start < end) { while (start < end && a[end] >= key) {//从后半部分向前扫描 end--; } a[start] = a[end]; while (start < end && a[start] <= key) {//从前半部分向后扫 start++; } a[end] = a[start]; } a[end] = key; return end; } public static void sort(int[] a,int start ,int end){ if(start>=end){ return ; } int index=part(a,start,end); sort(a,start,index-1); sort(a,index+1,end); } }