zoukankan      html  css  js  c++  java
  • 快速排序

    核心思想找一个轴点元素,备份轴点元素,先从右往左找,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;
        }
  • 相关阅读:
    C
    B
    A
    G
    BZOJ_1208_&_Codevs_1258_[HNOI2004]_宠物收养所_(平衡树/set)
    Codevs_1230_元素查找_(set/Hash)
    POJ_2503_Babelfish_(Trie/map)
    POJ_2001_Shortest_Prefixes_(Trie)
    BZOJ_3670_[NOI2014]_动物园_(kmp)
    BZOJ_3196_二逼平衡树_(树套树,线段树+Treap)
  • 原文地址:https://www.cnblogs.com/zzq-include/p/13857009.html
Copyright © 2011-2022 走看看