/* 快速排序: 1、以第一个数作为基数 2、从右向左比较,找出第一个小于基数的数,记录下标j 3、从左往右比较,找出第一个大于基数的数,记录下标i 4、将i,j对应值交换 5、将i对应的小值赋值给low对应的基数值 6、将基数赋给i下标 7、循环。 */ class SortQuickDemo { public static void main(String[] args) { int [] a =new int[]{1,2,5,3,4,6,9,8,7}; sortQuick(a,0,8); for(int i : a) System.out.print(i + ".."); } public static void sortQuick(int a[],int low,int high) { if(low < high) { int mid = partition(a, low, high); sortQuick(a,low,mid-1); sortQuick(a,mid + 1,high); } } public static int partition(int a[],int low,int high) { int i=low,j=high,value=a[low]; while(i < j && a[j] >= value) j--; while(i < j && a[i] <= value) i++; if(i < j) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } a[low] = a[i]; a[i] = value; return j; } }