冒泡排序通过双重循环实现:外层控制n−1轮排序,每轮将最值“冒泡”至末尾;内层执行相邻比较交换,范围逐轮缩小;可添加swapped标志提前终止。

冒泡排序用双重循环实现,外层控制轮数,内层负责每轮的相邻比较与交换。
外层循环:控制排序轮数
一共需要进行 n−1 轮比较(n 是数组长度),因为每轮至少把一个最大(或最小)元素“冒泡”到末尾,最后一轮只剩一个元素无需再比。
- 循环变量通常从 0 到 n−2(含),或用 i
- 第 i 轮后,末尾 i+1 个位置已有序,内层循环上限可相应缩短
内层循环:执行相邻比较与交换
每轮中,从头开始两两比较相邻元素,把较大值逐步“推”向末尾。
- 起始索引一般为 0,结束索引为 n−2−i(防止越界且跳过已排好部分)
- 若 arr[j] > arr[j+1],就交换两者
- 交换可用临时变量,也可用异或(仅限整型,不推荐初学使用)
完整示例代码(升序)
// 假设 arr = {64, 34, 25, 12, 22, 11, 90}
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
for (int i = 0; i arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
运行后 arr 变为 {11, 12, 22, 25, 34, 64, 90}。
优化点:提前终止
如果某轮内层循环一次交换都没发生,说明数组已有序,可提前退出。
- 定义布尔变量 swapped,每轮初设为 false
- 交换时置为 true;本轮结束后若仍为 false,用 break 跳出外层循环
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










