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 相关文章推荐
javascript的对话框详解与参数
Mar 08 Javascript
利用浏览器全屏api实现js全屏
Jan 16 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
SWFUpload多文件上传及文件个数限制的方法
May 31 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
完美解决浏览器跨域的几种方法(汇总)
May 08 Javascript
Node.js中环境变量process.env的一些事详解
Oct 26 Javascript
微信小程序云开发使用方法新手初体验
May 16 Javascript
微信小程序实现下拉框功能
Jul 16 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防止sql注入之过滤分页参数实例
2014/11/03 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
JQuery球队选择实例
2015/05/18 Javascript
简单学习vue指令directive
2016/11/03 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python接口测试get请求过程详解
2020/02/28 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
毕业自我评价
2014/02/05 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
项目建议书怎么写
2014/05/15 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
vue elementUI批量上传文件
2022/04/26 Vue.js