冒泡排序--java进阶day06
1.冒泡排序
https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996835

我们会发现上图排序的样子非常像之前打印的倒三角,所以,冒泡排序也需要使用循环嵌套
2.代码实践
根据图片,我们知道5个数只要排4次
如果外循环是arr.length,就会循环5次,因此我们要减1

.

内循环是控制两个数之间进行排序,循环次数我们暂时不管,先写代码逻辑

系统说第11行造成了索引越界异常,我们对第11行逐个分析
如图,我们将内循环的所有元素罗列出来
发现在j=4时,有arr[4]和arr[5],但是数组一共5个数,最大的索引都是4,因此问题出自索引5

解决方法很简单,我们只要让内循环的循环次数-1,j就不会等于4,恰好元素只要比较到arr[4]

.

按照这种写法,内循环每次都循环4次,但之前我们分析时,循环次数是不断减少的,所以还需要优化
我们把目光放在内循环的循环条件这块,如果每完成一次循环都会对应的-0、-1、-2、-3,那么循环的次数也就变成4、3、2、1,完美符合条件




i正好就是这样变化的,所以我们只需要再减i即可

冒泡排序--java进阶day06的更多相关文章
- Java进阶(三十八)快速排序
Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...
- Java进阶之路
Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- 当我们说线程安全时,到底在说什么——Java进阶系列(二)
原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...
- Java进阶03 IO基础
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java进阶01 String类
链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...
- 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)
本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...
随机推荐
- 记录小程序跳转h5,然后h5涉及下载文件的问题
小程序跳转h5中,可以在小程序增加一个页面使用webView方式嵌套三方小程序,不过需要配置白名单 由于小程序的限制,不能在嵌套的h5中进行文件下载 网上也没有很好的解决方法,解决方法是再跳到小程序带 ...
- Appium Android自动化测试配置
1. 首先需要在Android 手机上安装3个apk文件 https://github.com/appium/appium-uiautomator2-server/releases (2个apk文件) ...
- Solution Set -「LOCAL」冲刺省选 Round XXVIII
\(\mathscr{Summary}\) A 题显然是图论模型嘛--但是卡得太久了,B 题 C 题都不好骗,裂开 qwq. 感觉时间安排上不尽合理,如果 B C 简单一点我这个就要挂打分了. ...
- CDS标准视图:ABC标识文本 I_ABCIndicatorText
视图名称:ABC标识文本 I_ABCIndicatorText 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'ABC Indicator - Text' @V ...
- rpm与dpkg
基本介绍 "dpkg "是"Debian Packager "的简写.为 Debian 专门开发的套件管理系统,方便软件的安装.更新及移除.所有源自Debian ...
- moectf2023 web wp
gas!gas!gas! 直接跑脚本 import requests session=requests.Session() url="http://127.0.0.1:14447" ...
- 使用SOUI4中的STreeView控件
STreeView控件是一个基于虚表技术实现的高性能树形控件. 和STreeCtrl这种传统的树形控件将数据和控件固定在一起不同,STreeView数据和控件分离,使用一个adapter进行连接. 用 ...
- 在SOUI中使用GetAttribute获取XML中配置的属性
SOUI的界面布局使用XML来布局,在XML配置的属性值会通过SObject::SetAttribute(name, value)的方式交给SObject处理. SWindow是SOUI的界面元素对象 ...
- 国际“论”剑!天翼云数据库论文被EDBT收录!
近日,由天翼云数据库团队.中国电信云计算研究院和深圳北理莫斯科大学合作完成的<Taste: Towards Practical Deep Learning-based Approaches fo ...
- Apache Camel系列(4)----Akka Camel
Akka是一个高性能,高容错的的分布式框架,并且对Camel也提供了很好的支持,下面创建一个Akka Camel的demo,运行环境:CentOS7 + IntelliJ + JDK8.这个demo分 ...