这个解释通俗易懂
没写半年。。又忘得差不多了,这次花了点时间重新写了一遍。
/** * 快排 * <p> * Created by Avalon on 2017/1/21. */ public class QuickSort { public static void quickSort(int[] arrs) { process(arrs, 0, arrs.length - 1); } private static void process(int[] arrs, int start, int end) { if (start < end) { int t = quickSortProcess(arrs, start, end, start); process(arrs, start, t - 1); process(arrs, t + 1, end); } } private static int quickSortProcess(int[] arrs, int start, int end, int targetIdx) { boolean right = true; int i = start, j = end; int t = targetIdx; int tv = arrs[targetIdx]; while (i <= j) { if (right) { if (arrs[j] < tv) { arrs[t] = arrs[j]; t = j; right = false; } j--; } if (!right) { if (arrs[i] > tv) { arrs[t] = arrs[i]; t = i; right = true; } i++; } } arrs[t] = tv; return t; } }