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 Ajax.ashx 高效分页实现代码
Oct 20 Javascript
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
Vue实现todolist删除功能
Jun 26 Javascript
VueJS 取得 URL 参数值的方法
Jul 19 Javascript
jQuery实现简单日历效果
Jul 05 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
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
PHP写日志的实现方法
2014/11/05 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
简单实现PHP留言板功能
2016/12/21 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
jquery 插件学习(三)
2012/08/06 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
解析javascript系统错误:-1072896658的解决办法
2013/07/08 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Python列出一个文件夹及其子目录的所有文件
2016/06/30 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
电钳专业个人求职信
2014/01/04 职场文书
面试后感谢信
2014/02/01 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2019各种承诺书范文
2019/06/24 职场文书
Python re.sub 反向引用的实现
2021/07/07 Python
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang
Elasticsearch 聚合查询和排序
2022/04/19 Python