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 相关文章推荐
prototype Element学习笔记(Element篇三)
Oct 26 Javascript
Java/JS获取flash高宽的具体方法
Dec 27 Javascript
javaScript对文字按照拼音排序实现代码
Dec 27 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
防止jQuery ajax Load使用缓存的方法小结
Feb 22 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
Jul 27 Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
Open and Print a Word Document
2007/06/15 Javascript
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
常用的js方法合集
2017/03/10 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
微信小程序实现多选框全选与取消全选功能示例
2019/05/14 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
对numpy中的数组条件筛选功能详解
2018/07/02 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
Python装饰器简单用法实例小结
2018/12/03 Python
使用Python实现批量ping操作方法
2020/05/06 Python
华为慧通笔试题
2016/04/22 面试题
2015新学期家长寄语
2015/02/26 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python