快速排序
核心思想找一个轴点元素,备份轴点元素,先从右往左找,end--操作。一旦不满足大小条件,则将右侧的数值放置到开始位置,然后开始位置进行++,向右侧找进行循环往复
public static void main(String[] args) { int ary[] = {6, 8, 8, 6, 2, 5, 9, 3, 7}; quickSort(ary); System.out.println(JSON.toJSONString(ary)); } private static void quickSort(int[] ary) { quickSort(ary, 0, ary.length - 1); } private static void quickSort(int[] ary, int begin, int end) { if (end - begin < 2) return; int mid = getMid(ary, begin, end); quickSort(ary, begin, mid); quickSort(ary, mid + 1, end); } private static int getMid(int[] ary, int begin, int end) { int tmp = ary[begin]; for (; begin < end; ) { for (; begin < end; ) { //从右往左检查 if (tmp < ary[end]) { end--; } else {//大于等于 ary[begin++] = ary[end]; break; } } for (; begin < end; ) { //从左往右检查 if (tmp > ary[begin]) { begin++; } else { ary[end--] = ary[begin]; break; } } } ary[begin] = tmp; return begin; }