冒泡排序也是排序算法中的一种,他的排序方式是把下标相邻的两个数进行比较,从小到大排序,下标相邻的两个数,如果后面的数小于前面的数,就进行交换,大于则不交换,继续比较下一组数据,直到比完最后一组数据,这个数组中最大的数就冒出来了,举个例子:

  假定现在有一个整型数组{23,5,41,166,17},我们要对他进行冒泡排序,首先是下标0和下标1进行比较,下标1中的数据5小于下标0中的数据23,将两者进行交换,数组变为{5,23,41,166,17},之后,下标1和下标2进行比较,下标2中的数据大于下标1中的数据,所以不进行交换,再接着按这种原理,比较下标2和下标3,下标3和下标4中的数据,那么到最后,这个整型数组中最大的数字,就会被放在下标4中,之后再进行第二轮比较,还是下标0和下标1进行比较,下标1和下标2进行比较,下标2和下标3进行比较,比较到这里,这一轮就比较完了,因为下标4中放的这个数组中最大的数字,并且下标3中放的是这个数组中第二大的数字了,接下来还是按照这样的原理,找出数组中第三大的数字,第四大的数字……读者不妨自己试着排一下 
   
  我简单说一下原理,为什么比较完之后冒出来的会是最大值,因为当你在比较第一个数和第二个数的时候,如果第二个数小于第一个数,就进行交换,那么就保证了第二个数是前两个数中最大的数,之后第二个数和第三个数进行比较,小于交换,大于不交换,那么就又保证了第三个数是前三个数中最大的数…… 
   
  可以发现,跟选择排序一样,对五个数进行冒泡排序,需要经过四轮比较,第一轮比较4次,第二轮比较3次,第三轮比较2次……对n个数进行排序,则需要n-1轮比较,第一轮比较n-1次,第二轮比较n-2次……

java冒泡排序原理?相关推荐

  1. Java冒泡排序原理速记,选择排序原理速记

    Java冒泡排序原理速记,选择排序原理速记 冒泡排序原理分析: 冒泡排序从左往右两两比较:保护右边的排序好的元素(比较直接交换元素). 选择排序原理: 选择排序从左往右依次比较:保护左边排序好的元素( ...

  2. 排序算法(一)——冒泡排序原理及Java实现

    冒泡排序原理:我觉得类似于拍集体照的时候老师指挥按大小个排队 依次比较两个相邻的数组元素.满足交换条件就交换二者位置,不满足就继续向下比较. 冒泡排序原理动态图(摘自网络) Demo代码 //冒泡排序 ...

  3. java冒泡排序代码_JAVA

    java013 二维数组定义: 二维数组是存放一维数组(内存地址/引用)的数组. 图1 二维数组的初始化: 1)静态初始化 int intA[] [] ={ { 1, 2 }, { 2, 3, 4 } ...

  4. 《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程

    参考网址:http://blog.csdn.net/luanlouis/article/details/50529868 0.前言 读完本文,你将了解到: 一.为什么说Jabalpur语言是跨平台的 ...

  5. Java冒泡排序【简】

    为什么80%的码农都做不了架构师?>>>    Java冒泡排序 概念:重复遍历要排序的数列.一次比较两个元素,大小互换.遍历到该数列无需互换,排序完成 Java冒泡排序 publi ...

  6. java冒泡排序_Java算法分析之冒泡排序(Bubble Sort)

    冒泡排序名字由来? 越大的元素经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名"冒泡排序". 冒泡排序 ...

  7. 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )

    文章目录 前言 一.编译生成带局部变量表的字节码文件 二.局部变量表 前言 上一篇博客 [Java 虚拟机原理]Class 字节码二进制文件分析 二 ( 常量池位置 | 常量池结构 | tag | i ...

  8. 【Java 虚拟机原理】Class 字节码二进制文件分析 六 ( 属性类型 | Code 属性 | 属性名称索引 | 属性长度 | 操作数栈最大深度 | 局部变量存储空间 | 字节码长度 )

    文章目录 前言 一.属性类型 二.Code 属性表数据结构 三.属性名称索引 四.属性长度 五.操作数栈最大深度 六.局部变量存储空间 七.字节码长度 八.存储字节码指令的一系列字节流 前言 上一篇博 ...

  9. 【Java 虚拟机原理】Class 字节码二进制文件分析 五 ( 方法计数器 | 方法表 | 访问标志 | 方法名称索引 | 方法返回值类型 | 方法属性数量 | 方法属性表 )

    文章目录 前言 一.方法表结构 二.方法计数器 三.方法表数据解析 ( init 构造方法 ) 1.方法访问标志 2.方法名称索引 3.方法返回类型 4.方法属性数量 前言 上一篇博客 [Java 虚 ...

最新文章

  1. 年薪80万技术专家,面试通过后,被发现简历造假!合并8年前多段工作!惨遭警告和淘汰!...
  2. 【Win8启动后自动进入传统桌面设置】
  3. apache 不执行PHP,显示代码
  4. Lambda表达式介绍
  5. UA MATH571A 一元线性回归IV 模型诊断
  6. 免费有理之文件备份软件
  7. zabbix2.4域用户配置
  8. 类文件结构-method-init和类文件结构-method-main
  9. AngularJs 相应回车事件
  10. 【OpenCV 例程200篇】63. 图像锐化——Laplacian 算子
  11. ERRORS:*: (auth.E003) ‘User.username‘ must be unique because it is named as the ‘USERNAME_FIELD
  12. Altium Designer之Preferences
  13. 远程源已存在于“ git push”到新存储库中
  14. Html5+Css3小试牛刀
  15. 服务器云端设置怎么退出_换新手机时,3个地方要及时清除退出,别让旧手机成隐私“内鬼”...
  16. Android应用开发之统计App时长
  17. Java入门教程——下载JAVA
  18. 个别计价法、先进先出法、加权平均法、移动加权平均法解读
  19. fedora 11源码安装设置fcitx3.6输入法
  20. 【汇编】微机原理与接口技术课程设计

热门文章

  1. 女生职高学计算机应用有用吗,女生学计算机专业好吗_职高计算机专业Word范例教学三例...
  2. WinEdt学习笔记(二、编辑公式)
  3. windows 系统查看端口号并杀死
  4. android开发板配ip,itop4412开发板-Android4.4-设置静态IP
  5. Oracle有个A-TEAM
  6. shiro教程8(缓存管理)
  7. php keydown,jquery keydown事件的使用详解
  8. SpringBoot常用的application配置
  9. switch循环和for循环的区别
  10. 定义一个函数,输入三角形的三条边,求三角形面积