js实现数组冒泡排序、快速排序原理


Posted in Javascript onMarch 08, 2016

本文为大家分享了js数组冒泡排序、快速排序的实现原理,供大家参考,具体内容如下

1、冒泡排序

随便从数组中拿一位数和后一位比较,如果是想从小到大排序,那么就把小的那一位放到前面,大的放在后面,简单来说就是交换它们的位置,如此反复的交换位置就可以得到排序的效果。

var arr = [3,1,4,2,5,21,6,15,63];

function sortA(arr){
 for(var i=0;i<arr.length-1;i++){
 for(var j=i+1;j<arr.length;j++){
  //获取第一个值和后一个值比较
 var cur = arr[i];
 if(cur>arr[j]){
  // 因为需要交换值,所以会把后一个值替换,我们要先保存下来
 var index = arr[j];
  // 交换值
 arr[j] = cur;
 arr[i] = index;
 }
 }
 }
 return arr;
}
//因为一次循环只能交换一个最大的值,所以需要再套一层for循环。

2、快速排序:

 从数组的中间拿一个值,然后通过这个值挨个和数组里面的值进行比较,如果大于的放一边,小于的放一边,然后把这些合并,再进行比较,如此反复即可。

var arr = [3,1,4,2,5,21,6,15,63];
function sortA(arr){
 // 如果只有一位,就没有必要比较
 if(arr.length<=1){
 return arr;
 }
 // 获取中间值的索引
 var len = Math.floor(arr.length/2);
 // 截取中间值
 var cur = arr.splice(len,1);
 // 小于中间值放这里面
 var left = [];
 // 大于的放着里面
 var right = [];
 for(var i=0;i<arr.length;i++){
 // 判断是否大于
 if(cur>arr[i]){
 left.push(arr[i]);
 }else{
 right.push(arr[i]);
 }
 }
 // 通过递归,上一轮比较好的数组合并,并且再次进行比较。
 return sortA(left).concat(cur,sortA(right));
}

想要学习更多关于javascript排序的内容,请点击《javascript排序方法实现》

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Javascript动态绑定事件的简单实现代码
Dec 25 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
减少访问DOM的次数提升javascript性能
Feb 24 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
Oct 16 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
Dec 31 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
微信小程序实现多图上传
Jun 19 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
Dec 29 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 #Javascript
javascript html实现网页版日历代码
Mar 08 #Javascript
一道关于JavaScript变量作用域的面试题
Mar 08 #Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 #Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 #Javascript
javascript对象的创建和访问
Mar 08 #Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 #Javascript
You might like
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
有关PHP性能优化的介绍
2013/06/20 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
2018/12/05 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
详解CSS的border边框属性及其在CSS3中的新特性
2016/05/10 HTML / CSS
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
水果连锁超市创业计划书
2014/01/24 职场文书
管理失职检讨书范文
2015/05/05 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
图文详解nginx日志切割的实现
2022/01/18 Servers
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电