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的formatter格式化函数代码
Jan 12 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
Oct 17 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
Feb 25 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
Angularjs全局变量被作用域监听的正确姿势
Feb 06 Javascript
解决Angular.Js与Django标签冲突的方案
Dec 20 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
vue实现表格过滤功能
Sep 27 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
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
使用Sphinx对索引进行搜索
2013/06/25 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
javascript OFFICE控件测试代码
2009/12/08 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
python爬虫实现中英翻译词典
2019/06/25 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python PIL库图片灰化处理
2020/04/07 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
小学教研工作制度
2014/01/15 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏
TS 类型收窄教程示例详解
2022/09/23 Javascript