冒泡排序通过双重循环比较相邻元素并交换实现升序排列,每轮将最大值“冒泡”至末尾;基础实现需n−1轮,每轮比较范围递减;可优化为检测无交换时提前结束,并封装为静态方法复用。

Java 中数组配合冒泡排序实现升序排列,核心是用双重循环比较相邻元素并交换位置,直到整个数组有序。
冒泡排序的基本逻辑
冒泡排序每次遍历都把当前未排序部分的最大值“冒泡”到末尾。对长度为 n 的数组,最多需要 n−1 轮比较;每轮中,相邻两个元素两两比较,前大后小时就交换。
基础实现(升序)
以下是最简洁、易理解的写法:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
int[] arr = {64, 34, 25, 12, 22, 11, 90};
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;
}
}
}
-
外层循环 i 控制排序轮数,每轮确定一个最大值位置,所以范围是
0 到 length−2 -
内层循环 j 比较范围随 i 增大而缩小:第 i 轮只需比到
length−2−i,避免重复比较已排好序的末尾 - 交换使用临时变量
temp,这是 Java 中交换两个基本类型变量的标准方式
优化:提前结束(检测是否已有序)
如果某一轮没发生任何交换,说明数组已经有序,可提前退出:
boolean swapped;
for (int i = 0; i
swapped = false;
for (int j = 0; j
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) break; // 没交换,提前结束
封装成可复用的方法
把逻辑封装为静态方法,便于多次调用:
public static void bubbleSort(int[] arr) {
boolean swapped;
for (int i = 0; i
swapped = false;
for (int j = 0; j
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true;
}
}
if (!swapped) break;
}
}
调用:bubbleSort(arr);
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










