public class TestQSort { /** * 对数组进行排序 * * @param a */ public static void sort(int[] a) { quickSort(a, 0, a.length - 1); } /** * 对数组进行快速排序 * * @param a * @param low * @param high */ private static void quickSort(int[] a, int low, int high) { if (low < high) { int p = partition(a, low, high); quickSort(a, low, p - 1); quickSort(a, p + 1, high); } } /** * 返回每次划分后的位置 * * @param a * @param low * @param high * @return */ private static int partition(int[] a, int low, int high) { int index = low - 1; int s = a[high]; for (int j = low; j < high; j++) { if (a[j] < s) { index++; swap(a, index, j); } } swap(a, ++index, high); return index; } /** * 交换数组中指定位置的元素 * * @param a * @param i * @param j */ private static void swap(int[] a, int i, int j) { int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; } /** * 遍历数组中的元素 * * @param a */ private static void iterator(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + "/t"); } System.out.println(); } public static void main(String[] args) { int[] a = { 21, 58, 40, 76, 5, 69, 30 }; iterator(a); sort(a); iterator(a); } }