快速排序是对冒泡排序的一种改进。
1 import java.util.Random; 2 3 public class MyQuickSort { 4 5 //快速排序--啊哈算法 6 public static void main(String[] args) { 7 Random random = new Random(); 8 int num[] = new int[10]; 9 for (int i = 0; i < 10; i++) { 10 num[i] = random.nextInt(100); 11 } 12 quickSort(num, 0, num.length - 1); 13 for (int i = 0; i < num.length; i++) { 14 System.out.print(num[i] + " "); 15 } 16 } 17 18 private static void quickSort(int arr[], int low, int high) { 19 //判断终止的条件在递归函数中很重要 20 //这里的大于等于的大于有什么区别?? 21 if (low >= high) return; 22 int base = arr[low]; //基准数 23 int i = low; 24 int j = high; 25 while (i < j) { 26 /* 27 先从右边开始找起,很重要 28 从右边找小于基准数的元素,从左边找大于基准数的元素,然后交换二者; 29 */ 30 //这里的大于等于的大于有什么区别?? 31 while (i < j && arr[j] >= base) { 32 j--; 33 } 34 //这里的小于等于和小于有什么区别?? 35 while (i < j && arr[i] <= base) { 36 i++; 37 } 38 if (i < j) { 39 int temp = arr[i]; 40 arr[i] = arr[j]; 41 arr[j] = temp; 42 } 43 44 } 45 /* 46 /将基准数与 i==j的位置的元素交换 47 */ 48 arr[low] = arr[i]; 49 arr[i] = base; 50 //递归调用 i==j 左边和右边的部分 51 quickSort(arr, 0, i - 1); 52 quickSort(arr, i + 1, high); 53 } 54 }