Java 中的冒泡排序
Java 中的冒泡排序
冒泡排序是最简单的交换排序算法,核心思想:重复遍历数组,两两比较相邻元素,若顺序错误就交换它们,就像气泡一样,大的元素会逐步 “浮” 到数组末尾。
一、核心原理
比较相邻的两个元素,如果前一个比后一个大,就交换它们;
每一轮遍历,都会把当前最大的元素“冒泡” 到数组末尾;
重复执行,直到整个数组有序。
举个例子(数组:[5,3,8,4,2])
第 1 轮:[3,5,4,2,8] → 最大数 8 到末尾
第 2 轮:[3,4,2,5,8] → 次大数 5 到倒数第二
第 3 轮:[3,2,4,5,8] → 第三大数 4 到倒数第三
第 4 轮:[2,3,4,5,8] → 数组完全有序
二、基础版冒泡排序(Java 实现)
java
运行
public class BubbleSort {
public static void main(String[] args) {
// 待排序数组
int[] arr = {5, 3, 8, 4, 2};
System.out.println("排序前:");
printArray(arr);
// 调用冒泡排序
bubbleSort(arr);
System.out.println("\n排序后:");
printArray(arr);
}
/**
* 冒泡排序核心方法
* @param arr 待排序的整型数组
*/
public static void bubbleSort(int[] arr) {
// 空数组/只有一个元素,无需排序
if (arr == null || arr.length <= 1) {
return;
}
int n = arr.length;
// 外层循环:控制排序轮数(n个元素需要n-1轮)
for (int i = 0; i < n - 1; i++) {
// 内层循环:每轮比较的次数(每轮确定一个最大值,减少一次比较)
for (int j = 0; j < n - 1 - i; j++) {
// 前一个元素 > 后一个元素,交换(升序)
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/**
* 打印数组
*/
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
}
}
浙公网安备 33010602011771号