【快速排序基本思想】 通过一趟排序将数据分成独立两部分,一边大于中间量,一边小于,然后按此方法对两部分分别进行快速排序,整个排序过程用递归进行。Java源码如下: package sort; public class QucikSort_my { static int[] data = { 20, 52, 12, 63, 3, 95, 46, 21, 122, 16 }; void quick_sort() { qsort_asc(0, data.length - 1); } void qsort_asc(int low, int high) { int i, j, x; if (low < high) { // 结束递归 i = low; j = high; x = data[i]; while (i < j) { while (i < j && data[j] > x) { j--; // 从右向左找第一个小于x的数 } if (i < j) data[i++] = data[j]; while (i < j && data[i] < x) { i++; // 从左向右找第一个大于x的数 } if (i < j) data[j--] = data[i]; } data[i] = x; qsort_asc(low, i - 1); qsort_asc(i + 1, high); } } void qs(int left, int right) { int l, r, h; l = left; r = right; h = (l + r) / 2; while (true) { while (data[++l] < data[h]) ; while (data[--r] > data[h]) ; if (l > r) break; swap(l, r); } qs(left, l - 1); qs(r + 1, right); } void swap(int m, int n) { int temp = data[m]; data[m] = data[n]; data[n] = temp; } static void show() { for (int ii = 0; ii < data.length; ii++) { System.out.print(" [" + ii + "]=" + data[ii]); } System.out.println(); } public static void main(String[] args) { QucikSort_my sort = new QucikSort_my(); sort.quick_sort(); sort.show(); } }