快排 java实现
快排 java实现 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。 快排的核心思想是:将要排序的序列(假设下标是从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) { return; } int q = partition(a, start, end); // 获取分区点 quickSortInternally(a, start, q - 1); quickSortInternally(a, q +