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中void(0)的具体含义解释
Aug 02 Javascript
javascript 设计模式之单体模式 面向对象学习基础
Apr 18 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
Javascript中神奇的this
Jan 20 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
Dec 20 Javascript
浅谈Node 异步IO和事件循环
May 05 Javascript
vue v-for 使用问题整理小结
Aug 04 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 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
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
php源码的使用方法讲解
2019/09/26 PHP
CSS心形加载的动画源码的实现
2021/03/09 HTML / CSS
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
原生JavaScript生成GUID的实现示例
2014/09/05 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
简单介绍Ruby中的CGI编程
2015/04/10 Python
详解Django中Request对象的相关用法
2015/07/17 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
python实现简单神经网络算法
2018/03/10 Python
python实现石头剪刀布程序
2021/01/20 Python
python实现微信防撤回神器
2019/04/29 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
python使用建议技巧分享(三)
2020/08/18 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
运动会开幕式解说词
2014/02/05 职场文书
低碳环保倡议书
2014/04/14 职场文书
治超工作实施方案
2014/05/04 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
大学生操行评语大全
2014/12/31 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS