Java使用快速排序法对数组进行排序

时间:2020-12-13 22:08:40
 1 package com.yzy.test;
 2 
 3 public class Test {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         int[] array = { 43, 64, 21, 6565, 3424, 22, 6523, 345 };
10         ArraySort(array, 0, array.length - 1);
11         for (int i : array) {
12             System.out.print(i + " ");
13         }
14     }
15 
16     // 快速排序方法
17     private static void ArraySort(int[] array, int lowIndex, int highIndex) {
18         int low = lowIndex;
19         int high = highIndex;
20         int mid;
21         if (lowIndex < highIndex) {
22             while (low <= high) {
23                 mid = array[(lowIndex + highIndex) / 2];
24                 while ((low < highIndex) && (array[low] < mid)) {
25                     ++low;
26                 }
27                 while ((high > lowIndex) && (array[high] > mid)) {
28                     --high;
29                 }
30                 if (low <= high) {
31                     wrap(array, low, high);
32                     ++low;
33                     --high;
34                 }
35             }
36             if (low < highIndex) {
37                 ArraySort(array, low, highIndex);
38             }
39             if (high > lowIndex) {
40                 ArraySort(array, lowIndex, high);
41             }
42         }
43 
44     }
45 
46     // 交换数组元素
47     private static void wrap(int[] array, int low, int high) {
48         // TODO Auto-generated method stub
49         int temp = array[low];
50         array[low] = array[high];
51         array[high] = temp;
52     }
53 }

技术要点:快速排序是对气泡排序的一种改进,其排序速度相对较快。基本思想是:通过一趟排序将要排序数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此是整个数据变成有序序列。