冒泡排序通过多轮遍历比较相邻元素并交换,使极值逐步浮至端点;java用双层for循环实现,外层控制n−1轮,内层避免越界且跳过已排序部分;可加swapped标志提前终止。

冒泡排序通过重复遍历待排序数组,比较相邻元素并交换位置,使较大(或较小)的元素逐步“浮”到一端。Java 中用两层 for 循环嵌套即可清晰实现。
外层循环控制排序轮数
外层循环决定总共需要多少轮比较。对于长度为 n 的数组,最多进行 n−1 轮就能完成排序(每轮至少确定一个最值位置)。轮数越少,未排序部分越小。
- 起始:i = 0
- 结束条件:i
- 每轮后,末尾 i+1 个元素已就位,无需再比
内层循环执行相邻比较与交换
内层循环在每一轮中从头开始,逐对比较相邻元素(j 和 j+1),若顺序错误(如升序时前 > 后),则交换。注意边界:j 最大只能到 arr.length - 2 - i,避免越界且跳过已排好的尾部。
- 起始:j = 0
- 结束条件:j
- 交换写法:int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp;
完整可运行示例(升序)
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
System.out.println("排序前: " + java.util.Arrays.toString(arr));
// 外层控制轮数
for (int i = 0; i // 内层执行比较和交换
for (int j = 0; j if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("排序后: " + java.util.Arrays.toString(arr));
}
}
小优化:提前终止
如果某一轮内层循环中一次交换都没发生,说明数组已有序,可提前退出。加一个 boolean swapped 标志即可:
- 每轮开始设 swapped = false
- 每次交换后设 swapped = true
- 本轮结束后若 swapped == false,直接 break
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











