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 14 Javascript
有关js的变量作用域和this指针的讨论
Dec 16 Javascript
打印json对象的内容及JSON.stringify函数应用
Mar 29 Javascript
jquery改变disabled的boolean状态的三种方法
Dec 13 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
jquery zTree异步加载简单实例讲解
Feb 25 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
深入了解js原型模式
May 30 Javascript
Vue混入mixins滚动触底的方法
Nov 22 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
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
浅谈javascript中return语句
2015/07/15 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
如何使用angularJs
2017/05/08 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
基于Python的OCR实现示例
2020/04/03 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
篮球比赛拉拉队口号
2014/06/10 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
武当山导游词
2015/02/03 职场文书
学校中秋节活动总结
2015/03/23 职场文书
学习十八大的感悟
2015/08/11 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS