/** * 快速排序 * * 快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小, * 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 * * @author yaoyuan * */ public class QuickSort { public static int[] QuickSort(int[] pData, int left, int right) { System.out.println("left is :" + left + " " + "right is : " + right); // left从0开始,right从数组的最大值开始 int i = left, j = right; int middle, strTemp; // 获取中间值 middle = pData[(left + right) / 2]; do { while ((pData[i] < middle) && (i < right)) { i++; } while ((pData[j] > middle) && (j > left)) { j--; } if (i <= j) { strTemp = pData[i]; pData[i] = pData[j]; pData[j] = strTemp; i++; j--; } } while (i <= j); if (left < j) { QuickSort(pData, left, j); } if (right > i) { QuickSort(pData, i, right); } return pData; } public static void main(String[] args) { int[] pData = { 6, 7, 3, 0, 2, 5, 13, 10, 11, 12 }; for (int t = 0; t < pData.length; t++) System.out.print(pData[t] + " "); System.out.println(""); QuickSort(pData, 0, pData.length - 1); System.out.println(""); for (int t = 0; t < pData.length; t++) System.out.print(pData[t] + " "); } }