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 相关文章推荐
一个XML格式数据转换为图表的例子
Feb 09 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
jquery实现的鼠标拖动排序Li或Table
May 04 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
Bootstrap每天必学之折叠(Collapse)插件
Apr 25 Javascript
浅谈JS中的bind方法与函数柯里化
Aug 10 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
Node.js的Mongodb使用实例
Dec 30 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
koa2 数据api中间件设计模型的实现方法
Jul 13 Javascript
解决pycharm双击但是无法打开的情况
Oct 31 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连接Oracle for NT 远程数据库
2006/10/09 PHP
PHP中英混合字符串截取函数代码
2011/07/17 PHP
php设计模式小结
2013/02/15 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
2013/09/10 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
react-router实现按需加载
2017/05/09 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
Python语言实现将图片转化为html页面
2017/12/06 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
Numpy掩码式数组详解
2018/04/17 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python处理RSTP视频流过程解析
2020/01/11 Python
工程师岗位职责
2013/11/08 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript