以下是Java实现冒泡排序的代码,添加了便于快速记忆的注释和口诀:
代码实现(带注释)
public class BubbleSort {
public void sort(int[] arr) {
if (arr == null || arr.length <= 1) return;
int n = arr.length;
boolean swapped; // 标记是否发生交换
// 外层循环控制排序轮数(n-1轮)
for (int i = 0; i < n - 1; i++) {
swapped = false;
// 内层循环比较相邻元素,将较大值往后交换
for (int j = 0; j < n - i - 1; 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;
}
}
}
记忆口诀
冒泡排序要记牢,外层循环走n-1
内层循环比相邻,大值往后交换忙
每轮确定一个数,标记优化效率高
关键点记忆:
- 核心思想:比较相邻元素,将较大值不断“冒泡”到右侧
- 循环控制:
- 外层循环:控制排序轮数(共
n-1轮) - 内层循环:每轮比较次数递减(
n-i-1次)
- 外层循环:控制排序轮数(共
- 优化点:
- 使用
swapped标记,若某轮未发生交换,说明数组已有序,提前结束
- 使用