冒泡排序

  • 定义
  • 原理
  • 例子
  • 代码实现

定义

冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。(来自百度)

原理

  1. 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
  2. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。

例子

要排序的数组为:{4,5,7,6,3,1,2}
初始时:

第一次冒泡结果为:

解释:
先比较4和5: 4比5小,不进行交换
接着比较5和7: 5比7小,不进行交换
接着比较7和6: 7比6大,进行交换,此时数组为:

接着比较7和3: 7比3大,进行交换,此时数组为:

接着比较7和1: 7比1大,进行交换,此时数组为:

接着比较7和2: 7比2大,进行交换,此时数组为:

同理:第二次冒泡结果为:

第三次冒泡结果为:

第四次冒泡结果为:

第五次冒泡结果为:

第六次冒泡结果为:

第七次冒泡结果为:

代码实现

package sort;public class MaopaoOrder {public static void sort(int[] arr) {for(int i = arr.length-1; i > 0; i--) {for (int j = 0; j < i; j++) {if(arr[j]>arr[j+1]){int temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}}//下面为测试代码public static void main(String[] args) {int[] arr= {4,5,7,6,3,1,2};sort(arr);for (int i : arr) {System.out.print(i);}}
}

今日学习——冒泡排序相关推荐

  1. 今日学习 2022年11月14日

    今日学习 1.pytorch nn.Embedding的用法和理解 2.Pytorch torch.nn.GRU 用法 3.pytorch中permute函数的用法 4.pytorch系列 – 9 p ...

  2. vue rsa加密 php解密,【今日学习】VUE使用RSA加密技术

    原标题:[今日学习]VUE使用RSA加密技术 1 Vue端搭建 首先我们还是先安装必要的模块哈: npm install jsencrypt --save 接下来我们需要在main.js的配置文件中配 ...

  3. 经典算法学习——冒泡排序

    冒泡排序是我们学习的第一种排序算法.应该也算是最简单.最经常使用的排序算法了. 无论怎么说.学会它是必定的. 今天我们就用C语言来实现该算法. 演示样例代码已经上传至:https://github.c ...

  4. 今日学习之SQL基本语法与操作

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.数据库 1.简介 2.存储数据方式 3.数据库存储的好处 二.MySQL安装 1.教程 三.基本DDL语句 1.DDL ...

  5. 今日学习心得——装饰模式

    今天学习了大话设计模式中的装饰模式,对这个模式的理解是在手动敲了代码之后第三遍看代码的时候才懂得的.我的心得就是,装饰模式===>包裹模式.呵呵,包裹模式是我起的名字,我的理解是装饰模式就是一层 ...

  6. 排序算法学习——冒泡排序

    冒泡排序是比较容易理解的一种稳定排序方法,我们将记录关键字的顺序表elem[0--n-1]看作垂直排列,每个记录看作是重量为elem[i]的气泡.根据重气泡不能在轻的气泡上的原则,从上往下扫描,把重气 ...

  7. 今日学习的关于笔记本电脑和origin绘图的一些

    笔记本电脑 首先学习的地方主要为: 1.bilibili 2.知乎 3.朋友 然后结论: 暗影骑士性价比很高,在保证性能的情况下价格便宜,但相对应的其它细节不太行. 暗影精灵8我个人挺喜欢它的设计,但 ...

  8. 今日学习——卷积神经网络(CNN)

    文章目录 一.空间不变性和局部性 二.边界检测--一个小例子感受卷积 三.CNN里的一些概念 1. padding 2. stride 步长 3. pooling 池化 4. 多通道卷积 5. 1x1 ...

  9. 今日学习之java初学者入门基础

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.计算机基础知识 计算机应用的方面 计算机硬件 计算机软件 计算机语言 人机交互 常用DOS命令 java语言特点 ja ...

最新文章

  1. python多线程端口扫描程序
  2. VS2010旗舰版无法安装
  3. 带有无参数的存储过程
  4. Apache Avro
  5. dataframe转化为array_【Python专栏】12 种高效 Numpy 和 Pandas 函数为你加速分析
  6. uva 11995——I Can Guess the Data Structure!
  7. 计算机网络的资源共享功能包,计算机网络的资源共享功能包括
  8. Java基础学习总结(72)——提升 java 代码的运行效率
  9. 绿茶软件测试自学,7号心理测试小程序
  10. javascript 为对象中的二级元素赋值 1006 Uncaught TypeError: Cannot set property ‘‘ of undefined
  11. 《线性代数及其应用 第四版》习题1.4
  12. Tomcat 下载安装教程
  13. java定时发文件给其他人微信_如何实现微信自动发送消息?
  14. 无线摄像头接有线如何改协议_WiFi中继器——让无线传输更简单
  15. 一支雪糕卖66?钟薛高,你就偷着乐吧
  16. Chrome游览器下载
  17. 2022年上半年计算机技术与软件专业技术资格(水平)考试陕西考区报名须知
  18. 用串口(TFTP)给设备升级程序
  19. python calu_Python的Woe:Woe库功能的介绍、安装和使用,之,woewoe,库函数,简介,方法,详细,攻略...
  20. 六子棋(客家六子棋)

热门文章

  1. 《Unix Linux 大学教程》 - 附录F
  2. 蚂蚁集团境外站点 Seata 实践与探索
  3. crontab定时执行任务命令详解及crontab 误删除恢复
  4. 退出登录清空session
  5. 大学计算机实验报告虚拟机,1虚拟机安装和使用实验报告书
  6. 这所“南方小镇”藏着雅居乐陈卓林描绘的“第二人生”
  7. opencv的抠图程序
  8. mysql主键可以重复吗_mysql 处理主键重复
  9. 小白之路由浅入深之------day05
  10. D 市场的 App 尽职调查报告