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

相关推荐
summer_west_fish9 分钟前
单体VS微服务:架构选择实战指南
java·微服务·架构
v***85711 分钟前
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
java·ubuntu·centos
烤麻辣烫19 分钟前
黑马程序员大事件后端概览(表现效果升级版)
java·开发语言·学习·spring·intellij-idea
q***965822 分钟前
Spring总结(上)
java·spring·rpc
思密吗喽23 分钟前
宠物商城系统
java·开发语言·vue·毕业设计·springboot·课程设计·宠物
ss2731 小时前
019:深入解析可重入互斥锁:原理、实现与线程安全实践
java·数据库·redis
luyun0202021 小时前
牛批了,某音录播神器
java·windows·figma
高级程序源1 小时前
springboot社区医疗中心预约挂号平台app-计算机毕业设计源码16750
java·vue.js·spring boot·mysql·spring·maven·mybatis
y***61312 小时前
SpringBoot集成Flowable
java·spring boot·后端
烤麻辣烫2 小时前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea