冒泡排序

冒泡排序算法图形化模拟

原数组:6 7 5 4 2 1

冒泡排序算法:

核心算法:

public static void bubble(int [] arr){// 模拟冒泡排序//  1. 0  ~  N - 1 选出最大//  2. 0  ~  N - 2 选出最大...//  n - 1. 0 ~ 1 选出最大if (arr.length == 1){return;}for (int i = arr.length - 1; i > 0; i--){ // 控制 0 ~ N -1  ~ N - 2...for (int j = 0; j < i; j++){if (arr[j] > arr[j + 1]) {swap(arr,j, j + 1);}}}
}

swap算法

// 交换两数
public static void swap(int[] arr,int i, int j){// 利用异或运算的性质:// 1. a ^ a = 0;// 2. 0 ^ a = a;// 3. a ^ b = b ^ a;// 4. a ^ b ^ c = a ^ (b ^ c)arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];// 上述即可完成交换两数,但是该方法是一个抖机灵的方法// 要确保,a与b所在的内存地址是不同的,如果内存地址相同,结果会变为0
}

上述就是完整的详细图解冒泡排序算法,还有很多优化的空间,比如当我们给出一组已经排好序的数据,或者有一大部分数据已经有序了,还可以进行优化。可以给出一个标志位flag,如果进入了交换算法,那么表示需要进行排序,如果自始至终都没有进入交换算法,那么表示这个数据已经有序了,就不需要n次判断了,可以在外层循环,添加break。直接结束该循环。

比如给出的数据如下:[1,2,3,4,5,6,7,8,9]
[1,3,6,7,8,9,10,11,12]

这种类似的数据,可以试着优化一下,作者也是正在学习,如有不正确,欢迎大家斧正。

java冒泡排序详解!!!带图相关推荐

  1. Java冒泡排序详解及完整代码

    冒泡排序:元素之间两两之间进行比较,如果前面的数比后面的大,那么这两个数据就交换位置,然后拿着较大的数和下一个数进行比较. 代码详解: 1.定义一个数组 2.外层循环表示一共要比较多少轮,当剩下最后一 ...

  2. 31道Java面试题,java冒泡排序详解

    京东一面凉经 object的方法,7大方法 synchronized方法讲解 synchronized方法实现原理 volatile关键字的原理 锁的分类 偏向锁讲解 NoClassDefFoundE ...

  3. css动画(详解带图)

    css动画 过渡 过渡 (transition)的作用 常用属性 实例 动画 动画的简介 设置关键帧 动画常用属性 实例 变形 变形(transform)的简介 常用属性(transform) Z轴平 ...

  4. Java 八大排序之冒泡排序详解

    Java 八大排序之冒泡排序详解 分析冒泡排序 数组[24,69,80,57,13] 第1轮排序:目标把最大数放在最后 第1 次比较:[24,69,80,57,13] 第2 次比较:[24,69,8 ...

  5. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  6. Java 多线程详解(五)------线程的声明周期

    Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...

  7. Java集合排序及java集合类详解

    Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...

  8. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  9. 常见的java设计模式详解

    常见的java设计模式详解 1. 根据目的来分 2 GoF的23种设计模式的功能 3.下面介绍几种常见的模式 单例(Singleton)模式 前言 1)单例(Singleton)模式的定义 2)特点 ...

最新文章

  1. 如何在网站上同步查看BCH数据
  2. python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息
  3. ConcurrentHashMap介绍
  4. 完成AOP 顶层设计-AopConfig
  5. php枚举mysql,小技巧:取得MYSQL中ENUM(枚举)列的全部可能值。-PHP教程,PHP应用...
  6. 高能预警!Apache Flink Meetup · 上海站返场啦
  7. 【重难点】【Redis 02】Redis 的持久化、Redis 的主从复制和集群、哨兵
  8. ArchLinux简明安装教程
  9. 模板与泛型编程(二)
  10. 无线短距通信技术标准:WIFI,蓝牙,ZigBee
  11. 【转】8G内存下MySQL的优化详细方案
  12. 电脑键盘上的快捷建大全
  13. MongoDB学习记录10-分片-副本集(mongodb3.2版本以前)
  14. c语言中对float保留固定3位,float保留三位小数 float,double 除法 保留 指定位
  15. 通用键盘鼠标模拟(包括USB和PS2)
  16. centos关闭自动锁屏
  17. 将下列表格转换为HTML代码,HTML table表格转换为Markdown table表格
  18. 小米路由器获得BSI物联网安全风筝标志认证;IDC最新数据显示浪潮分布式存储增速中国第一 | 全球TMT...
  19. 仪表特效——AE在UI动效设计中的应用
  20. 北京奥运会开幕式彩排 观众提前四小时等候

热门文章

  1. win10快捷键,别说你不知道
  2. 密码学---公钥密码---公钥密码体制
  3. 树莓派3b耳机杂音问题
  4. 不会电脑的可以学计算机吗?
  5. UEFI qemu环境搭建
  6. Docker架构原理及常用命令
  7. elm分类器功能_基于ELM的图像分类算法研究
  8. 滑动平均滤波c语言_常用滤波算法及C语言程序实现
  9. Windows网络服务管理
  10. 手机常用的快充QC2.0/3.0协议,你都了解吗?设备(比如支持快充的手机)通过USB数据通讯口D+/D-输出电压信号给充电器,充电器内置USB输入解码芯片,然后充电器会输出目标电压。