冒泡排序的原理、方法
冒泡排序
1、什么是冒泡排序?
冒泡排序是一种简单的排序算法,通过交换排序实现效果,使用与小规模的数据排序。
原理: 把一个乱序的数组,以某种规则(从大到小、从小到大)进行排序,通过比较相邻的元素,两两对比交换 ,完成排序;类似于吹泡泡一样,小的先飘起来,大的最后落在地上。
2、逻辑思路
从小到大排序:
(1)先遍历数组,让挨着的两个数据进行比较大小,前者比后者大,则将后者排到前面
(2)第一次遍历结束之后,最后的那个数据就是最大的一个
(3)接着又从第一个数据开始第二次遍历,依旧两两进行比较,本次遍历结束后,第二大数据会排在倒数第二位 (最后一次比较时,前者小后者大,结束本次遍历)
(4)以此类推,将数组进行遍历,完成小到大的排序
当两者在进行交换的时候,
无法完成直接交换,需要第三者来进行协助
比如: 交换两杯水(奶茶A 和可乐B 换杯子)> 需要先准备一个 空杯子C> 将奶茶A倒在空杯子C中 =>此时A空了,C满了> 将可乐B倒在之前奶茶A的杯子里 =>此时B空了,A满了> 再将C中的奶茶倒在B里面 => 完成交换
// 1、准备一个数组var arr=[1, 9, 6, 4, 5, 8, 3, 2, 7] // 2、定义循环次数,排序是两两比较,因此循环的次数为 数组长度-1for (var j = 0; j < arr.length - 1; j++) {for (var i = 0; i < arr.length - 1 - j; i++) { // 声明变量 i 来记录数组当中每一项数据的索引值(0,1,2……)if (arr[i] > arr[i + 1]) { // 满足条件即交换var help = arr[i];arr[i] = arr[i + 1];arr[i + 1] = help;}}}console.log(arr);
结果如图:
从大到小排序
思路同上,只需更换判断条件即可
// 1、准备一个数组var arr=[1, 9, 6, 4, 5, 8, 3, 2, 7] // 2、定义循环次数,排序是两两比较,因此循环的次数为 数组长度-1for (var j = 0; j < arr.length - 1; j++) {for (var i = 0; i < arr.length - 1 - j; i++) { // 声明变量 i 来记录数组当中每一项数据的索引值(0,1,2……)if (arr[i] < arr[i + 1]) { // 满足条件即交换var help = arr[i];arr[i] = arr[i + 1];arr[i + 1] = help;}}}console.log(arr);
结果如图:
冒泡排序的原理、方法相关推荐
- Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理
Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理 1. 重载包括:普通方法的重载和构造方法的重载 1 1.1. 横向重载"和"纵向重载"1 1.2. ...
- 《SOA 原理•方法•实践》作者毛新生先生签名售书活动
<SOA 原理•方法•实践>作者毛新生先生签名售书活动 2007年8月24日 北京香格里拉 毛新生先生将在"SOA 架构你的未来"大会现场签名售书 更多详情请访问:ht ...
- 《SOA 原理 方法 实践》作者毛新生先生签名售书活动圆满结束
<SOA 原理 方法 实践>作者毛新生先生签名售书活动圆满结束 8月24日,由互动出版网和博文视点资讯有限公司共同举办的<SOA 原理o方法o实践>作者毛新生先生签名售书活动圆 ...
- python和报表生成工具_报表自动生成工具的原理方法,及热门软件
阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...
- 杨辉三角-原理方法的由来
杨辉三角的原来(来自百度) 北宋人贾宪约1050年首先使用"贾宪三角"进行高次开方运算, 南宋数学家杨辉在<详解九章算法>(1261年)中,保存了一张宝贵图形--&qu ...
- ndi协议_NDI是什么协议,NDI传输协议技术原理方法
NDI是什么协议,NDI传输协议技术原理方法 NDI是什么协议 NDI就是一种接口传输协议. NDI就是通过IP网络进行超低延时.无损传输.交互控制的标准协议: NDI协议最大的不同是:NDI视频传输 ...
- Python——冒泡排序(原理剖析)
文章目录 前言 一.冒泡排序概念 二.原理分析 小结 三.代码实现 1.排序方式小------->大 2.排序方式大------->小 总结 前言 我在大学里面主要学习的语言主要是pyth ...
- 冒泡排序的原理,思路,以及算法分析(Java实现)
冒泡排序 如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式. 1.原理:比较两个相邻的元素,将值大的元素交换到右边 2.思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面. ...
- 冒泡排序java jsp_冒泡排序实现原理
原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...
最新文章
- linux path环境变量检索目录,Linux下动态链接库加载路径及搜索路径问题
- 系统调用003 系统服务表
- 快递员要失业?两位前谷歌工程师研发出自动驾驶汽车只送货不载人
- 用于J2EE开发的Cloud IDE
- linux 系统命令之wget和yum和apt-get区别
- os.path的使用
- 用python开发的运维管理系统下载_GitHub - jiegangwu/OPMS_v3: 基于 Python 3.5 + Django 2.0 开发的运维管理系统...
- springmvc+druid+dataSource配置的两种方式
- 基于ArcGIS软件的打开教程
- 图说三极管的三个工作状态____图解的很形象
- 使用命令行连接MySQL数据库
- vc 写一个计算机功能,VC++的一个实例
- 域名查询工具DMitry
- 如何提高思维能力和逻辑能力?
- Activity标签设置
- 2018 ACM/ICPC 北京赛区网络赛 D 80 Days 线段树
- 【未雨绸缪】海南测控天线系统防御台风的措施
- 潮水退去 你还是那个让HR离不开的猎头吗
- 微信支付回调到底回调了什么?
- 计算机电源高效率模式,Windows7的三种电源模式对硬件工作频率的影响
热门文章
- HoloLens2开发入门教程
- 【4-8】《XML与JSON》——XML、解析XML、SAX、DOM4J、XStream、JSON、Gson、Fastjson
- 计算机术语shebang,如何在Windows下使用Apache 2忽略Perl shebang?
- 不用再找了,这就是全网最全的异常检测方法总结
- matlab异常检测
- 让div也可以获得keydown事件
- python readlines用法_Python readlines()方法
- PHP保存数组到数据库
- SpringBoot 整合 JWT 实现 Token 验证
- 不能锁定计算机怎么搞,怎么样锁定电脑,或者使电脑不能联网~