运行效果:
=================================================
代码部分:
=================================================
/hello_test/src/com/b510/test/QuickStore.java
1 /** 2 * 3 */ 4 package com.b510.test; 5 6 /** 7 * 快速排序 8 * @author <a href="mailto:hongtenzone@foxmail.com">hongten</a> 9 * @date 2013-3-1 10 * 更多信息:<a href="http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html">more>></a> 11 */ 12 public class QuickStore { 13 /** 14 * 创建随机数组 15 * @param min 数组的最小值 16 * @param max 数组的最大值 17 * @param length 数组的长度 18 * @return 随机数组 19 */ 20 public static int[] createArray(int min, int max, int length) { 21 int[] array = new int[length]; 22 for (int i = 0; i < length; i++) { 23 array[i] = min + (int) (Math.random() * (max - min + 1)); 24 System.out.println("随机数 :array[" + i + "] = " + array[i]); 25 } 26 return array; 27 } 28 29 /** 30 * 快速排序 31 * @param array 源数组 32 * @param l 33 * @param r 34 * @return 35 */ 36 public static int[] quickStore(int[] array, int l, int r) { 37 if (l < r) { 38 int i = l, j = r, x = array[l]; 39 while (i < j) { 40 while (i < j && array[j] >= x) 41 // 从右向左找第一个小于x的数 42 j--; 43 if (i < j) 44 array[i++] = array[j]; 45 46 while (i < j && array[i] < x) 47 // 从左向右找第一个大于等于x的数 48 i++; 49 if (i < j) 50 array[j--] = array[i]; 51 } 52 array[i] = x; 53 quickStore(array, l, i - 1); // 递归调用 54 quickStore(array, i + 1, r); 55 } 56 return array; 57 } 58 59 /** 60 * 显示数组信息 61 * @param array 62 */ 63 public static void showArray(int[] array) { 64 System.out.println("排序后...."); 65 for (int i = 0; i < array.length; i++) { 66 System.out.println("array[" + i + "] = " + array[i]); 67 } 68 } 69 70 /** 71 * test 72 * @param args 73 */ 74 public static void main(String[] args) { 75 int[] array = createArray(12, 50, 6); 76 int[] newArray = quickStore(array, 0, array.length - 1); 77 showArray(newArray); 78 } 79 }