快排 java实现及三数取中优化
快排的核心思想是:将要排序的序列(假设下标是从start到end)中选任意一个数据作为pivot(分区点,也叫基准点),然后遍历数据,将小于pivot 的数据放在pivot的前面,大于等于 pivot 的数据放在pivot的后面。之后递归的将两个子序列排序。
过程如下。
这里我们给出的是原地排序的实现,也就是算法的执行过程中不需要额外的空间。
public class Quick {
// 快速排序,a是数组,n表示数组的大小
public static void quickSort(int[] a, int n) {
quickSortInternally(a, 0, n - 1);
}
// 快速排序递归函数
private static void quickSortInternally(int[] a, int start, int end) {
if (start >= end)