javascript快速排序算法详解


Posted in Javascript onSeptember 17, 2014

"快速排序"的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,找一个基准点

(2)建立两个数组,分别存储左边和右边的数组

(3)利用递归进行下次比较

看一个demo:http://jsdo.it/norahiko/oxIy/fullscreen(网页打开可能较慢,慢慢等待吧)

<script type="text/javascript"> 

function quickSort(arr){
  if(arr.length<=1){
    return arr;//如果数组只有一个数,就直接返回;
  }

  var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
  var numValue = arr.splice(num,1);//找到中间数的值
  var left = [];
  var right = [];

  for(var i=0;i<arr.length;i++){
    if(arr[i]<numValue){
      left.push(arr[i]);//基准点的左边的数传到左边数组
    }
    else{
      right.push(arr[i]);//基准点的右边的数传到右边数组
    }
  }
 return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”

</script>
Javascript 相关文章推荐
用JQUERY增删元素的代码
Feb 14 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
异步动态加载JS并运行(示例代码)
Dec 13 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
Aug 16 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
Sep 11 Javascript
js生成的验证码的实现与技术分析
Sep 17 #Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 #Javascript
node.js中使用q.js实现api的promise化
Sep 17 #Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 #Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 #Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 #Javascript
JavaScript的各种常见函数定义方法
Sep 16 #Javascript
You might like
一个很不错的PHP翻页类
2009/06/01 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
ThinkPHP路由机制简介
2016/03/23 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
js unicode 编码解析关于数据转换为中文的两种方法
2014/04/21 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
Python牛刀小试密码爆破
2011/02/03 Python
Python中的列表知识点汇总
2015/04/14 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
JAVA代码查错题
2014/10/10 面试题
优秀体育委员自荐书
2014/01/31 职场文书
委托公证书范本
2014/04/03 职场文书
房屋维修协议书范本
2014/09/25 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
golang中字符串MD5生成方式总结
2021/07/04 Golang
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang
go goth封装第三方认证库示例详解
2022/08/14 Golang