三、快速排序

思想:(1)找一个数组的基准点,从数组中取出,改变原数组(用splice实现)

            (2)生成left和right两个数组,小于基准值push到left,大于push到right,利用concat拼接left、基准值、right

                (3)对left和right分别递归调用

代码截图:


代码:

function quickSort(arr){

  arr = arr.concat();

  if(arr.length<=1) return arr;

  let base = arr.splice(0,1);

  let left = [];

  let right = [];

  arr.forEach(element => {

    if(element<base){

      left.push(element);

    }else{

      right.push(element);

    }

  });

  return quickSort(left).concat(base,quickSort(right))

}

console.log(quickSort([6,7,1,2,23,12,1,4,2]));

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名:朱嘉仪 学号:16020199053 转载自https://zhuanlan.zhihu.com/p/463...
    亓霂_宣萧阅读 618评论 0 0
  • 快速排序是一种分治排序算法。快速排序需要先找到一个基准值v和经过初步交换得到的此基准值v在数组中的下标p,经过初步...
    低吟浅唱1990阅读 248评论 0 0
  • 一、简介 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对...
    野狗子嗷嗷嗷阅读 543评论 0 0
  • 前面两种算法面临的问题,桶排序浪费存储空间,冒泡排序增加了时间的复杂度,那怎样才能既节省时间、又节省存储空间呢! ...
    wutongyu阅读 355评论 0 1
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 682评论 0 0