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

    /*
      quick: 实现快速排序
        @params
          ary [array] 需要排序的数组
        @return
          [array] 排序后的新数组
    */

      function quick(ary) {
        // 4、结束递归(当 ary 中小于等于一项,则不用处理)
        if (ary.length <= 1) {
          return ary;
        }
        // 1、找到数组的中间项,在原有的数组中把它移除
        let middleIndex = Math.floor(ary.length / 2);
        let middValue = ary.splice(middleIndex, 1)[0];

        // 2、准备左右两个数组,循环剩下数组中的每一项,比当前项小的放到左边数组中,反之放到右边数组中
        let aryLeft = [],
        aryRight = [];
        for (let i = 0; i < ary.length; i++) {
          let item = ary[i];
          item < middValue ? aryLeft.push(item) : aryRight.push(item);
        }
        // 3、递归方式让左右两边的数组持续这样处理,一直到左右两边都排好序为止
        //   最后让左边 + 中间 + 右边 拼接成为最后的结果
        return quick(aryLeft).concat(middValue, quick(aryRight));
      }
    let ary = [12, 8, 15, 16, 1, 24]
    ary = insert(ary);
    console.log(ary)
  • 相关阅读:
    [USACO06NOV]Corn Fields(状压DP)
    关灯问题II (状态压缩 BFS)
    天梯---至多删三个字符(DP)
    天梯
    蓝桥
    天梯
    天梯
    天梯
    天梯
    蓝桥
  • 原文地址:https://www.cnblogs.com/HYTing/p/12626668.html
Copyright © 2011-2022 走看看