图解Java实现冒泡排序(Bubble Sort)

核心思想:

冒泡排序就像「水中的气泡上浮」,每次比较相邻元素,如果顺序不对就交换,把最大的元素一步步推到数组末尾。重复这个过程,直到整个数组有序。


📌 分步拆解(以数组 `[5, 3, 8, 1]` 为例)

第一轮冒泡(找出最大值 8)

```

初始数组:[5, 3, 8, 1]

Step 1: 5 vs 3 → 交换 → [3,5,8,1]

Step 2: 5 vs 8 → 不交换

Step 3: 8 vs 1 → 交换 → [3,5,1,8]

结果:最大值 8 沉底 → [3,5,1,8]

```

第二轮冒泡(找出次大值 5)

```

当前数组:[3,5,1,8]

Step 1: 3 vs 5 → 不交换

Step 2: 5 vs 1 → 交换 → [3,1,5,8]

结果:次大值 5 沉底 → [3,1,5,8]

```

第三轮冒泡(找出第三大值 3)

```

当前数组:[3,1,5,8]

Step 1: 3 vs 1 → 交换 → [1,3,5,8]

结果:第三大值 3 沉底 → [1,3,5,8]

```

最终结果:

数组有序 → **[1, 3, 5, 8]**


🖥️ Java代码实现

```java

public class BubbleSort {

public static void bubbleSort(int[] arr) {

// 外层循环:控制冒泡轮数(每轮确定一个最大值)

for (int i = 0; i < arr.length - 1; i++) {

// 内层循环:比较相邻元素并交换

for (int j = 0; j < arr.length - 1 - i; j++) {

if (arr[j] > arr[j + 1]) {

// 交换元素(像气泡上浮)

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

public static void main(String[] args) {

int[] arr = {5, 3, 8, 1};

bubbleSort(arr);

System.out.println(Arrays.toString(arr)); // 输出 [1, 3, 5, 8]

}

}

```


🎨 图解流程

```

初始数组: [5] [3] [8] [1]

↑ ↑

第一轮比较5和3 → 交换 → [3][5][8][1]

第一轮继续: [5] [8] → 不交换

↑ ↑

第一轮继续: [8] [1] → 交换 → [3][5][1][8]

↑ ↑

第二轮开始: [3][5][1][8]

↑ ↑

第二轮比较3和5 → 不交换

第二轮继续: [5][1] → 交换 → [3][1][5][8]

↑ ↑

```


⚙️ 时间复杂度

  • **最坏情况**:O(n²)(完全逆序)

  • **最佳情况**:O(n)(已有序,可优化提前终止)


💡 关键点总结

  1. **双重循环**:外层控制轮数,内层遍历比较。

  2. **相邻交换**:每次只交换相邻元素。

  3. **逐步沉底**:每轮确定一个最大值到末尾。

  4. **适用场景**:小规模数据或教学演示(实际开发中效率较低)。

相关推荐
kaico2018几秒前
远程调用组件openfeign
java·spring cloud
SunnyDays1011几秒前
如何使用 JAVA 将 PDF 转换为 PPT:完整指南
java·开发语言·pdf转ppt
qq_12498707531 分钟前
基于springboot归家租房小程序的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·小程序·毕业设计·计算机毕业设计
csbysj20202 分钟前
Python Math: 深入探索Python中的数学模块
开发语言
Bigbig.3 分钟前
驱动工程师面试题 - 操作系统1
linux·开发语言·面试·硬件架构
是一个Bug3 分钟前
Java后端开发面试题清单(50道)
java·开发语言·jvm
GIS 数据栈5 分钟前
【Seggis遥感系统升级】用C++高性能服务Drogon重构软件服务架构|QPS提升300%,性能再升级!
java·开发语言·c++·重构·架构
moxiaoran57536 分钟前
Go语言的接口
开发语言·后端·golang
2301_780669869 分钟前
List(特有方法、遍历方式、ArrayList底层原理、LinkedList底层原理,二者区别)
java·数据结构·后端·list
Coder码匠9 分钟前
策略模式的实际应用:从单一数据源到多数据源架构
java·架构·策略模式