代码: package org.ml.kspx; public class Main { private static int count = 0; public static void main(String args[]) { Integer datas[] = new Integer[] { 23, 22, 12, 11, 4, 33, 21, 56, 77, 54, 36, 44, 98, 10, 12 }; System.out.print("序号\t"); for (int i = 0; i < datas.length; i++) { if (i == datas.length / 2) { System.out.print("|\t"); } System.out.print(i + "\t"); } System.out.println("\n"); quickSort(datas, 0, datas.length - 1); } /** * 进行快速排序 * * @param datas * 数组 * @param left * 最左 * @param right * 最右 */ public static void quickSort(Integer datas[], int left, int right) { count++; System.out.print(count + "\t"); for (int i = 0; i < datas.length; i++) { if (i == datas.length / 2) { System.out.print("|\t"); } System.out.print(datas[i] + "\t"); } System.out.println(); int temp,middle; int i = left; int j = right; middle = datas[(i+j)/2]; do { // 找左边比中间值大的数 while (datas[i] < middle && i < right) { i++; } // 找右边比中间值小的数 while (datas[j] > middle && j > left) { j--; } // 将左边大的数和右边小的数进行替换 if (i <= j) { temp = datas[i]; datas[i] = datas[j]; datas[j] = temp; i++; j--; } } while (i <= j);// 两者交叉时截止 if (i < right) { quickSort(datas, i, right); } if (j > left) { quickSort(datas, left, j); } } }