冒泡排序在java中通过双层for循环实现:外层控制n−1轮排序,每轮将最大值“冒泡”至末尾;内层从0到n−2−i比较交换相邻元素;可加swapped标志优化,无交换时提前终止。

冒泡排序在 Java 中通过嵌套循环和条件判断实现,核心是用 for 循环控制轮数和比较次数,用 if 判断相邻元素大小并交换。
外层循环控制排序轮数
数组有 n 个元素,最多需要 n−1 轮比较就能完成排序。每轮把当前未排序部分的最大值“冒泡”到末尾。
- 循环变量
i从 0 开始,到n - 2结束(共 n−1 次) - 第 i 轮后,最后 i+1 个位置已有序,内层循环可减少比较次数
内层循环执行相邻比较与交换
每轮中,从前到后依次比较相邻两个元素,如果前一个大于后一个,就交换它们的位置。
- 循环范围:从索引
0到n - 2 - i(避免越界且跳过已排好序的末尾) - 使用临时变量或 Java 8+ 的
Arrays.swap()(需自己封装)来交换 - 示例关键代码:
if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; }
可选优化:提前终止
如果某一轮中没有发生任何交换,说明数组已经有序,可以提前退出,提升最好情况时间复杂度到 O(n)。
- 定义布尔标志
swapped,初始为false - 每次交换时设为
true;本轮结束后若仍为false,用break跳出外层循环
完整可运行示例
(以整型数组为例)
int[] arr = {64, 34, 25, 12, 22, 11, 90};
int n = arr.length;
for (int i = 0; i arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) break;
}
// 排序后 arr 升序排列
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











