/** * 快速排序 * * @param arr * @param lo * @param hi * @return */ public static int[] quickSort(int[] arr, int lo, int hi) { if (lo >= hi) return arr; int num = partition(arr, lo, hi); quickSort(arr, lo, num - 1); quickSort(arr, num + 1, hi); return arr; }
/** * 排序数组 返回基准值 * * @param arr * @param lo * @param hi * @return */ public static int partition(int[] arr, int lo, int hi) { int num = arr[lo]; if (lo >= hi) return 0; while (lo < hi) { while (hi > lo && arr[hi] >= num) { hi--; } arr[lo] = arr[hi]; while (hi > lo && arr[lo] <= num) { lo++; } arr[hi] = arr[lo]; } arr[hi] = num; return hi; }