【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 冒泡排序的实现方法

相关推荐
KoiHeng9 分钟前
Java的文件知识与IO操作
java·开发语言
czlczl2002092518 分钟前
Spring Data Redis
java·redis·spring
宵时待雨18 分钟前
STM32笔记归纳6:中断
笔记·stm32·嵌入式硬件
Gary Studio19 分钟前
rk芯片上手
学习
知识即是力量ol19 分钟前
在客户端直接上传文件到OSS
java·后端·客户端·阿里云oss·客户端直传
闻哥26 分钟前
深入理解 Spring @Conditional 注解:原理与实战
java·jvm·后端·python·spring
煜磊26 分钟前
MD5加盐值-注册与登录
java·开发语言
wYb123_45627 分钟前
Flutter for OpenHarmony软件开发助手app实战学习统计分析实现
学习·flutter
东东51635 分钟前
校园求职招聘系统设计和实现 springboot +vue
java·vue.js·spring boot·求职招聘·毕设
星河耀银海37 分钟前
AI学习第一站:从感知到认知,AI到底是什么?
人工智能·学习·ai