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中的end()使用方法
Jul 10 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
Jan 07 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
Three.js学习之几何形状
Aug 01 Javascript
vue组件间通信解析
Mar 01 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 Javascript
微信小程序 input输入及动态设置按钮的实现
Oct 27 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
JS获取本地地址及天气的方法实例小结
May 10 Javascript
JavaScript数组排序功能简单实现
May 14 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
松下Panasonic RF-B65电路分析
2021/03/02 无线电
解析php file_exists无效的解决办法
2013/06/26 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
vue实现图书管理系统
2020/12/29 Vue.js
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
2018/06/09 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
自我评价正确写法范文
2013/12/10 职场文书
护理工作感言
2014/01/16 职场文书
数控个人求职信范文
2014/02/03 职场文书
大学毕业生求职自荐信
2014/02/20 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
大一新生检讨书
2014/10/29 职场文书
交通事故案件代理词
2015/05/23 职场文书
音乐剧猫观后感
2015/06/04 职场文书
居安思危观后感
2015/06/11 职场文书
红色革命电影观后感
2015/06/18 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书