java冒泡排序详解!!!带图
冒泡排序
冒泡排序算法图形化模拟
原数组: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冒泡排序详解!!!带图相关推荐
- Java冒泡排序详解及完整代码
冒泡排序:元素之间两两之间进行比较,如果前面的数比后面的大,那么这两个数据就交换位置,然后拿着较大的数和下一个数进行比较. 代码详解: 1.定义一个数组 2.外层循环表示一共要比较多少轮,当剩下最后一 ...
- 31道Java面试题,java冒泡排序详解
京东一面凉经 object的方法,7大方法 synchronized方法讲解 synchronized方法实现原理 volatile关键字的原理 锁的分类 偏向锁讲解 NoClassDefFoundE ...
- css动画(详解带图)
css动画 过渡 过渡 (transition)的作用 常用属性 实例 动画 动画的简介 设置关键帧 动画常用属性 实例 变形 变形(transform)的简介 常用属性(transform) Z轴平 ...
- Java 八大排序之冒泡排序详解
Java 八大排序之冒泡排序详解 分析冒泡排序 数组[24,69,80,57,13] 第1轮排序:目标把最大数放在最后 第1 次比较:[24,69,80,57,13] 第2 次比较:[24,69,8 ...
- Java异常详解及如何处理
来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...
- Java 多线程详解(五)------线程的声明周期
Java 多线程详解(一)------概念的引入:https://blog.csdn.net/weixin_39816740/article/details/80089790 Java 多线程详解(二 ...
- Java集合排序及java集合类详解
Java集合排序及java集合类详解 (Collection, List, Set, Map) 摘要内容 集合是Java里面最常用的,也是最重要的一部分.能够用好集合和理解好集合对于做Java程序的开 ...
- 【Java网络编程与IO流】Java之Java Servlet详解
Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...
- 常见的java设计模式详解
常见的java设计模式详解 1. 根据目的来分 2 GoF的23种设计模式的功能 3.下面介绍几种常见的模式 单例(Singleton)模式 前言 1)单例(Singleton)模式的定义 2)特点 ...
最新文章
- 如何在网站上同步查看BCH数据
- python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息
- ConcurrentHashMap介绍
- 完成AOP 顶层设计-AopConfig
- php枚举mysql,小技巧:取得MYSQL中ENUM(枚举)列的全部可能值。-PHP教程,PHP应用...
- 高能预警!Apache Flink Meetup · 上海站返场啦
- 【重难点】【Redis 02】Redis 的持久化、Redis 的主从复制和集群、哨兵
- ArchLinux简明安装教程
- 模板与泛型编程(二)
- 无线短距通信技术标准:WIFI,蓝牙,ZigBee
- 【转】8G内存下MySQL的优化详细方案
- 电脑键盘上的快捷建大全
- MongoDB学习记录10-分片-副本集(mongodb3.2版本以前)
- c语言中对float保留固定3位,float保留三位小数 float,double 除法 保留 指定位
- 通用键盘鼠标模拟(包括USB和PS2)
- centos关闭自动锁屏
- 将下列表格转换为HTML代码,HTML table表格转换为Markdown table表格
- 小米路由器获得BSI物联网安全风筝标志认证;IDC最新数据显示浪潮分布式存储增速中国第一 | 全球TMT...
- 仪表特效——AE在UI动效设计中的应用
- 北京奥运会开幕式彩排 观众提前四小时等候