快速排序

 

快速排序是对冒泡排序的一种改进。

 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 }

 

posted on 2020-07-22 09:03  含光Aries  阅读(183)  评论(0编辑  收藏  举报