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的放大镜效果
May 30 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
js网页右下角提示框实例
Oct 14 Javascript
浅谈jQuery中replace()方法
May 13 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
使用jsonp实现跨域获取数据实例讲解
Dec 25 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
详解Vue CLI 3.0脚手架如何mock数据
Nov 23 Javascript
JS数组方法slice()用法实例分析
Jan 18 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
joomla组件开发入门教程
2016/05/04 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python面向对象class类属性及子类用法分析
2018/02/02 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
Python模块的制作方法实例分析
2019/12/21 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
一套C#面试题
2013/10/09 面试题
销售实习自我鉴定
2013/12/07 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
红色故事演讲稿
2014/05/22 职场文书
宇宙与人观后感
2015/06/05 职场文书
党员理论学习心得体会
2016/01/21 职场文书