一、思想
一句话总结:选择一个基准数,使得基准数左边小右面大,左右再次迭代。
与归并排序相同,快速排序也是用分支的思想。首先从数组中随机选取一个元素最为基准数,将该元素交换的数组的最后一位。将所有小于基准数的放置在左边,大于基准数的放置在右边,中间剩下的是等于基准数的元素,这时将基准数交换到中间,形成了一个以基准数为中心左右分治的数组,左面的元素都小于基准数,右边的元素都大于基准数。这时,分别将左右两个大于基准数与小于基准数的序列递归重新执行上述步骤,即可得到最终有序的数组。
二、图解过程
三、核心代码
//快速排序
public static void quickSort(int[] arr, int l, int r) {
if (l < r) {
swap(arr, l + (int) (Math.random() * (r - l + 1)