【Java学习笔记】冒泡排序

冒泡排序

思想:经过一轮遍历比较,把最大的放在数组的末尾

java 复制代码
int[] a = {3, 2, 1};
for( int i = 0; i < a.length-1; i++){
    for( int j = 0; j < a.length-1-i; j++){
        if(a[j] > a[j+1]){
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}
for( int i = 0; i < a.length; i++){
    System.out.print(a[i]+ " ");
}

分析过程

分析冒泡排序

初始数组

复制代码
### `[24, 69, 80, 57, 13]`

第 1 轮排序:目标把最大数放在最后

复制代码
### 第 1 次比较:`[24, 69, 80, 57, 13]`
复制代码
### 第 2 次比较:`[24, 69, 80, 57, 13]`
复制代码
### 第 3 次比较:`[24, 69, 57, 80, 13]`
复制代码
### 第 4 次比较:`[24, 69, 57, 13, 80]`

第 2 轮排序:目标把第二大数放在倒数第二位置

复制代码
### 第 1 次比较:`[24, 69, 57, 13, 80]`
复制代码
### 第 2 次比较:`[24, 57, 69, 13, 80]`
复制代码
### 第 3 次比较:`[24, 57, 13, 69, 80]`

第 3 轮排序:目标把第 3 大数放在倒数第 3 位置

复制代码
### 第 1 次比较:`[24, 57, 13, 69, 80]`
复制代码
### 第 2 次比较:`[24, 13, 57, 69, 80]`

第 4 轮排序:目标把第 4 大数放在倒数第 4 位置

复制代码
### 第 1 次比较:`[13, 24, 57, 69, 80]`

思路:

1. 外层for循环:表示需要进行排序的轮次,即每一次都找出最大的数排在队尾,需要排序数组长度-1次才可以排完

2. 内层for循环:表示每一轮排序把最大的放在数组末尾的这个过程的实现元素之间需要比较的轮次,每排序好一个元素,比较的轮次就减少,和外层循环有关

大体思想:化繁为简,先死后活,由内层推出的外层

拓展延申:从大到小排序怎么实现?

修改比较的方式即可

从小到大排序:前面的比后面大就交换

从大到小排序:后面的比前面小就交换

从大到小排序代码示例

java 复制代码
int[] a = {3, 2, 1};
for( int i = 0; i < a.length-1; i++){
    for( int j = 0; j < a.length-1-i; j++){
        if(a[j] < a[j+1]){
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}
for( int i = 0; i < a.length; i++){
    System.out.print(a[i]+ " ");
}

视频教学连接:透彻理解 Java 冒泡排序的实现方法

相关推荐
一 乐6 分钟前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
weixin_5134499612 分钟前
PCA、SVD 、 ICP 、kd-tree算法的简单整理总结
c++·人工智能·学习·算法·机器人
鱼鳞_23 分钟前
Java学习笔记_Day29(异常)
java·笔记·学习
烟锁池塘柳025 分钟前
一文讲透 C++ / Java 中方法重载(Overload)与方法重写(Override)在调用时机等方面的区别
java·c++·面向对象
一叶飘零_sweeeet28 分钟前
深入拆解 Fork/Join 框架:核心原理、分治模型与参数调优实战
java·并发编程
云烟成雨TD38 分钟前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring
嵌入式小企鹅1 小时前
DeepSeek-V4昇腾首发、国芯抗量子MCU突破、AI编程Agent抢班夺权
人工智能·学习·ai·程序员·算力·risc-v
摇滚侠1 小时前
帮我整理一份 IDEA 开发中常用快捷键
java·ide·intellij-idea
Amazing_Cacao1 小时前
CFCA精品可可产区认证课程风土解析(亚洲):撕开标签伪装,将微气候差异转化为可用变量
学习
我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列11--Requests模块3--测试练习
开发语言·python·学习·测试工具·pytest