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 EasyUI API 中文文档 - Tabs标签页/选项卡
Oct 01 Javascript
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
javascript两种function的定义介绍及区别说明
May 02 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
浅谈Angular4中常用管道
Sep 27 Javascript
基于vue组件实现猜数字游戏
May 28 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
layui动态绑定事件的方法
Sep 20 Javascript
如何通过vscode运行调试javascript代码
Jul 24 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静态类
2006/11/25 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python单例模式实例分析
2015/01/14 Python
Python CSV模块使用实例
2015/04/09 Python
老生常谈Python基础之字符编码
2017/06/14 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python生成word合同的实例方法
2021/01/12 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
追悼会上的答谢词
2014/01/10 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
辩论赛主持词
2014/03/18 职场文书
教师个人考察材料
2014/12/16 职场文书
小学优秀学生评语
2014/12/29 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Hive导入csv文件示例
2022/06/25 数据库