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 相关文章推荐
查询json的数据结构的8种方式简介
Mar 10 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
新手快速学习JavaScript免费教程资源汇总
Jun 25 Javascript
js+css绘制颜色动态变化的圈中圈效果
Jan 27 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
Vue2.x中的父组件传递数据至子组件的方法
May 01 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
Vee-Validate的使用方法详解
Sep 22 Javascript
聊聊鉴权那些事(推荐)
Aug 22 Javascript
JavaScript进阶(一)变量声明提升实例分析
May 09 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
vue异步加载高德地图的实现
2018/06/19 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
如何在Python中编写并发程序
2016/02/27 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
python画双y轴图像的示例代码
2019/07/07 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
Python使用type动态创建类操作示例
2020/02/29 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
2014年乡镇植树节活动方案
2014/02/28 职场文书
幼儿园老师寄语
2014/04/03 职场文书
个人工作表现评语
2014/04/30 职场文书
清明节演讲稿
2014/05/27 职场文书
工资收入证明
2014/10/07 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
实现GO语言对数组切片去重
2022/04/20 Golang
git stash(储藏)的用法总结
2022/06/25 Servers