/** * 快速排序法 */ public class QuickSort { static final int SIZE=18; static void quickSort(int[] a, int l,int r){ if (l < r) { int i,j,x; i = l; j = r; x = a[i]; while (i < j) { while(i < j && a[j] > x) j--; // 从右向左找第一个小于x的数 if(i < j) a[i++] = a[j]; while(i < j && a[i] < x) i++; // 从左向右找第一个大于x的数 if(i < j) a[j--] = a[i]; } a[i] = x; quickSort(a, l, i-1); /* 递归调用 */ quickSort(a, i+1, r); /* 递归调用 */ } } public static void main(String[] args) { int [] shuzu=new int[SIZE]; int i; for ( i = 0; i <SIZE ; i++) { shuzu[i]=(int)(100+Math.random()*(100+1)); } System.out.print("排序前的数组为:\n"); for ( i = 0; i < SIZE; i++) { System.out.print(shuzu[i]+"\t"); } System.out.print("\n"); quickSort(shuzu,0,SIZE-1); System.out.print("排序后的数组为:\n"); for ( i = 0; i < SIZE; i++) { System.out.print(shuzu[i]+"\t"); } System.out.print("\n"); } }