题解 | #快速排序#

快速排序

https://www.nowcoder.com/practice/38da660199d0400580ac3905c05f5bd6

const _quickSort = (array) => {

// 1. 判断 是[] 或者[x] 就直接返回

      if (array.length === 0 || array.length === 1) return array;

// 2. 分别定义左数组,右数组,中间值。

      let baseIndex = Math.floor(array.length / 2);

      let base = array.splice(baseIndex, 1);

      let left = [];

      let right = [];

// 3. 循环当前数组,并通过中间值去判断左边值和右边的值分别放到左数组和右数组里面

// 3.1 值得注意的是因为我们定义中间值的时候是向下取整的就是1.9还是1,所以是当前位<= base

      for (let i = 0; i < array.length; i++) {

        if (array[i] <= base) {

          left.push(array[i]);

        } else {

          right.push(array[i]);

        }

      }

4. 把左数组和中间值和右数组合并成一个新的数组,concat方法会返回一个新数组。

      return _quickSort(left).concat(base, _quickSort(right));

    };

#我的算法思考#
全部评论

相关推荐

在秋招的小白菜很想养修勾:一眼 苍穹外卖+谷粒商城,项目换一换吧,可以找一些付费知识星球博主带带,避免烂大街。多投投大厂,背背八股,你这学历乱杀了,等实习经验到位,到时候大厂闭眼选
投递美团等公司7个岗位
点赞 评论 收藏
分享
渐好:软光栅真的写明白了吗,既然是软渲那技术栈不应该使用OpenGL,光追和bvh既不算什么高级渲染技术更不应该属于软渲的内容,git那个项目没啥用,建议把前两个项目重新组织一下语言,比如软渲染那个项目 冯着色和msaa、贴图这几项分开写,写的到位点,如果你还学过光追那就单独写出来,如果没把握考官问你答不上来就别写给自己找麻烦,在技术栈那一栏简单提一下自己学过就行,这样杂的放在一起不太严谨,个人愚见.
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务