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)
  • 相关阅读:
    EasyUI 常用图标
    DataGridView滚动条联动
    FTP下载工具
    C# 解析带命名空间的xml
    1.基于3.x版本vue脚手架创建新项目
    js处理异步的几种方式
    JS字符串常用方法
    git(开源的分布式版本控制系统)
    js检查数据类型的方法
    数组的常用方法
  • 原文地址:https://www.cnblogs.com/HYTing/p/12626668.html
Copyright © 2011-2022 走看看