public static void quickSort(int[] a, int begin, int end) { int i = begin; int j = end; int baseData = a[i]; while (i < j) { while (a[j] >= baseData && j > i) j--; if (j > i) { a[i] = a[j]; i++; while (a[i] <= baseData && j > i) i++; if (j > i) { a[j] = a[i]; j--; } } a[i] = baseData; } if (i - 1 > begin) quickSort(a, begin, i - 1); if (j + 1 < end) quickSort(a, j + 1, end); }
选择基准数据,以基准数据为轴分为左边数据(都比基准小),右边数据(都比基准大)。
然后递归分别对左边数据右边数据进行排序。
快速排序的平均时间复杂性为O(nlogn)。