冒泡排序的原理
冒泡排序是一种简单的排序算法。它通过重复地遍历要排序的列表,比较每对相邻的元素并交换它们,如果它们的顺序错误。这个过程不断重复,直到没有需要交换的元素为止,这样列表就变得有序了。
在代码中,外层循环控制冒泡的轮数,每一轮都会把当前未排序部分的最大值“冒泡”到数组的末尾。内层循环则负责逐个比较相邻的元素并进行必要的交换操作。
/** * 冒泡排序的Java实现 */ public class BubbleSort { /** * 主方法,用于测试冒泡排序 */ public static void main(String[] args) { // 初始化一个整数数组 int[] arr = {64, 34, 25, 12, 22, 11, 90}; // 打印排序前的数组 System.out.println("排序前的数组:"); printArray(arr); // 调用冒泡排序方法 bubbleSort(arr); // 打印排序后的数组 System.out.println("排序后的数组:"); printArray(arr); } /** * 冒泡排序方法 * * @param arr 待排序的数组 */ public static void bubbleSort(int[] arr) { int n = arr.length; // 获取数组长度 // 外层循环:控制冒泡排序的轮数 for (int i = 0; i < n - 1; i++) { // 内层循环:控制每轮冒泡排序的比较次数 for (int j = 0; j < n - 1 - i; j++) { // 如果前一个元素大于后一个元素,则交换它们 if (arr[j] > arr[j + 1]) { // 交换arr[j]和arr[j + 1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } // 打印每轮排序后的数组状态 System.out.println("第" + (i + 1) + "轮排序后的数组:"); printArray(arr); } } /** * 打印数组的方法 * * @param arr 待打印的数组 */ public static void printArray(int[] arr) { for (int i : arr) { System.out.print(i + " "); } System.out.println(); } }
代码解释类声明
类声明
public class BubbleSort {}: 声明一个名为BubbleSort的公共类。
主方法
public static void main(String[] args) {}: 主方法是程序的入口点。
int[] arr = {64, 34, 25, 12, 22, 11, 90};: 初始化一个待排序的整数数组。
printArray(arr);: 调用printArray方法打印排序前的数组。
bubbleSort(arr);: 调用bubbleSort方法对数组进行排序。
printArray(arr);: 调用printArray方法打印排序后的数组。
冒泡排序方法
public static void bubbleSort(int[] arr) {}: 冒泡排序方法,接收一个整数数组作为参数。
int n = arr.length;: 获取数组的长度。
for (int i = 0; i < n - 1; i++) {}: 外层循环控制排序轮数,执行n-1轮。
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;: 使用临时变量temp交换元素。
printArray(arr);: 打印每轮排序后的数组状态。
打印数组方法
public static void printArray(int[] arr) {}: 打印数组的方法,接收一个整数数组作为参数。
for (int i : arr) { System.out.print(i + " "); }: 使用增强型for循环遍历数组并打印每个元素。
System.out.println();: 打印换行符。