快速排序

对于快速排序算法,个人理解是选择其中的一个数m作为基准,然后进行一次扫描,其目的是将所有比m小的数放在m左边,将所有比m大的数放在m右边。然后再利用分治的思想进行递归。也有人称之为“挖坑填数法”,下面给出的算法是将数组中第一个作为基准。

 1 public class Test {
 2     private static void qsort(int[] arr, int low, int high){
 3         if (low < high){
 4             int temp = partition(arr, low, high);
 5             qsort(arr, low, temp-1);
 6             qsort(arr, temp+1, high);
 7         }
 8     }
 9 
10     private static int partition(int[] arr, int low, int high){
11         int temp = arr[low];
12         while (low < high){
13             while (low < high && arr[high] >= temp) {
14                 high--;
15             }
16             arr[low]=arr[high];
17             while (low<high && arr[low] < temp) {
18                 low++;
19             }
20             arr[high] = arr[low];
21         }
22         arr[low] = temp;
23         return low;
24     }
25 
26     public static void main(String[] args) {
27         Random random = new Random();
28         int [] arr = new int[10];
29         for (int i = 0; i < 10; i++) {
30             arr[i] = random.nextInt(100) + 1;
31         }
32         qsort(arr, 0, arr.length - 1);
33         for (int i = 0; i < arr.length; i++) {
34             System.out.println(arr[i]);
35         }
36     }
37 }

posted @ 2017-04-10 00:11  三百块丶会走路  阅读(121)  评论(0)    收藏  举报