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中调用WebService方法小结
Mar 28 Javascript
Js中的onblur和onfocus事件应用介绍
Aug 27 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 Javascript
Javascript限制网页只能在微信内置浏览器中访问
Nov 09 Javascript
使用javascript实现雪花飘落的效果
Jan 13 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
Sep 21 Javascript
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
js实现简单的随机点名器
Sep 17 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 join函数应用
2011/05/04 PHP
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
vuex的使用步骤
2021/01/06 Vue.js
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Python 异常处理的实例详解
2017/09/11 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
中学生校园广播稿
2014/01/16 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
2015年库房管理工作总结
2015/10/14 职场文书