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的更多相关文章

  1. Java进阶(三十八)快速排序

    Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...

  2. Java进阶之路

    Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...

  3. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  4. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  5. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  6. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  7. 当我们说线程安全时,到底在说什么——Java进阶系列(二)

    原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...

  8. Java进阶03 IO基础

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...

  9. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

  10. 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)

    本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...

随机推荐

  1. SpringBoot集成MinIO8.3.x 依赖冲突解决,至简之招覆盖spring-boot-dependencies的依赖版本声明

    版本声明 SpringBoot 2.6.5 MinIO 8.3.7 报错信息 An attempt was made to call a method that does not exist. The ...

  2. web应用分页-copy

    1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑. (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端 ...

  3. MySQL数据定义语言

    原文链接:https://blog.liuzijian.com/post/83cdb010-fa97-e8ff-5b28-22da08e739e9.html 1.库操作 1.1 创建数据库 CREAT ...

  4. Educational Codeforces Round 172 (Rated for Div. 2)(C-D)

    题目链接:Dashboard - Educational Codeforces Round 172 (Rated for Div. 2) - Codeforces C. Competitive Fis ...

  5. 11. SpringCloud Alibaba Seata 分布式事务处理的详细使用以及详细剖析

    11. SpringCloud Alibaba Seata 分布式事务处理的详细使用以及详细剖析 先看一个问题,引出 Seata 单机单库(多表)处理事务示意图 分布式微服务架构下的数据库事务示意图: ...

  6. LangChain基础篇 (02)

    LangChain 核心模块学习:Chains 对于简单的大模型应用,单独使用语言模型(LLMs)是可以的. 但更复杂的大模型应用需要将 LLMs 和 Chat Models 链接在一起. 要么彼此链 ...

  7. Django项目与Vue的集成

    Django项目与Vue的集成 在现代Web开发领域,前后端分离已成为一种主流趋势.Django,作为一个强大的Python Web框架,以其丰富的功能和高度的可扩展性而受到开发者的青睐.而Vue.j ...

  8. VMware常用操作

    VMware常用操作 VMware作为一款功能强大的虚拟化软件,为用户提供了一个灵活.高效的虚拟环境.在日常使用中,掌握VMware的常用操作对于提高工作效率.优化资源配置至关重要.以下将详细介绍VM ...

  9. Nmap 语法及示例

    Nmap 语法及示例 基本语法 Nmap的基本语法结构如下: nmap [scan types] [options] [target] [scan types]: 标识扫描类型,如:TCP.UDP等. ...

  10. 原根学习笔记+BSGS复习笔记

    学原根发现拔山盖世算法忘光了,干脆一块儿写了吧. \(BSGS\) 算法 \(BSGS\) 算法,又名拔山盖世算法.北上广深算法.他解决的问题如下: 求解最小的可行的 \(k\),满足 \(a^k\e ...