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 相关文章推荐
一页面多XMLHttpRequest对象
Jan 22 Javascript
任意位置显示html菜单
Feb 01 Javascript
比较新旧两个数组值得增加和删除的JS代码
Oct 30 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
SuperSlide2实现图片滚动特效
Jun 20 Javascript
分享12个实用的jQuery代码片段
Mar 09 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 Javascript
Vue基础学习之项目整合及优化
Jun 02 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
Oct 12 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 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
最常用的8款PHP调试工具
2014/07/06 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
javascript smipleChart 简单图标类
2011/01/12 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python中的id()函数指的什么
2017/10/17 Python
Python中str.join()简单用法示例
2018/03/20 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
浅谈python3中input输入的使用
2019/08/02 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
党校培训自我鉴定
2014/02/01 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
学校安全防火方案
2014/06/07 职场文书
大雁塔英文导游词
2015/02/10 职场文书
关于开学的感想
2015/08/10 职场文书
春节随笔
2015/08/15 职场文书
小组口号霸气押韵
2015/12/24 职场文书
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技