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