js+排序

作者: bigtom | 来源:发表于2016-08-16 22:08 被阅读8次

快排

const quicksort = (arr) => {
  if(arr.length <= 1) return arr
  let pivot = arr[0]
  let left = arr.slice(1).filter((ele) => ele < pivot)
  let right = arr.slice(1).filter((ele) => ele > pivot)
  return quicksort(left).concat([pivot]).concat(quicksort(right))
}

归并排序

const mergesort = (arr) => {
  if (arr.length <= 1) return arr
  let left = mergesort(arr.slice(0,arr.length / 2))
  let right = mergesort(arr.slice(arr.length/2))
  return merge(left, right)
}

const merge = (left, right) => {
  let res = []
  while (left.length != 0 && right.length != 0){
    if (left[0] < right[0]){
      res.push(left.shift())
    }else{
      res.push(right.shift())
    }
  }
  if(left.length > 0) res = res.concat(left)
  if(right.length > 0) res = res.concat(right)
  return res
}

相关文章

  • js+排序

    快排 归并排序

  • js+树

    最近要开始找工作啦,很久很久之前用python和java刷过刷数据结构和算法,现在已经记忆模糊了。而且从来没有用j...

  • js+链表

    链表结构 删除链表某节点 遍历 反转单链表

  • react 与 vue有什么不同?

    1 语法不同 1)vue 采用template模板(html)+js+样式(less,sass,css)的形...

  • 前端面试常见问题汇总

    原生JS+浏览器部分:1、数组函数+字符串函数2、get、post请求 (区别)3、深拷贝、浅拷贝4、事件代理(委...

  • 2019-01-16

    多用型后台管理系统,目前采用原生JS+原生的PHP来进行开发,前端与后端的数据交互采用axios库来进行,目前没有...

  • 5.25日初学JS+案例

    //三种输出方式: // alert();//页面弹框 // document.write();//在页面打印...

  • 什么是ECMAScript

    有的同学可能会好奇,为什么js的版本要用es+年份(例如es2015,es2016等),而不是js+年份,这就要说...

  • 高性能js+页面加载速度

    代码运行速度 不要类型转换 即开始是什么类型的变量,就让他是什么类型,字符串转数字最好用parseInt. 不要重...

  • 字符串模板

    ES5下必须用+js+这样的形式进行拼接。ES6新增了字符串模版。字符串模版不再使用‘xxx’这样的单引号,而是换...

网友评论

      本文标题:js+排序

      本文链接:https://www.haomeiwen.com/subject/fhapsttx.html