Java 冒泡算法个人理解举例
冒泡排序重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就做交换。重复地进行遍历数列,直到没有再需要交换,就说明该数列已经排序完成。
Java实现冒泡排序的例子:
public class sortMethodExample {
public static void main(String[] args) {
int[] array = {164, 134, 25, 12, 22, 111, 90};
System.out.println("初始数组:");
printArray(array);
sortMethod(array);
System.out.println("排序后的数组:");
printArray(array);
}
/**
* 冒泡排序算法
* @param arr 待排序的数组
*/
public static void sortMethod(int[] arr) {
int n = arr.length;
boolean swapped;
for (int i = 0; i < n - 1; i++) {
swapped = false;
// 最后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;
swapped = true;
}
}
// 如果这一轮没有发生交换,则数组已经排序完成
if (!swapped)
break;
}
}
/**
* 打印数组
* @param arr 数组
*/
public static void printArray(int[] arr) {
for (int value : arr) {
System.out.print(value + " ");
}
System.out.println();
}
}
代码说明
-
main方法 (
main
):- 定义了一个整型数组
array
,包含了待排序的数据。 - 调用
printArray
打印原始数组。 - 调用
sortMethod
进行排序。 - 再次调用
printArray
打印排序后的数组。
- 定义了一个整型数组
-
冒泡排序方法 (
sortMethod
):- 使用两个嵌套循环实现排序。
- 外层循环
i
控制遍历次数,每次遍历都会将当前未排序部分的最大值放到正确的位置。 - 内层循环
j
负责比较相邻的元素,并在必要时交换它们。
- 外层循环
- 使用布尔变量
swapped
来记录每一轮是否有元素被交换。如果没有元素被交换,则说明数组已经是有序的,可以提前结束排序。
- 使用两个嵌套循环实现排序。
-
打印数组方法 (
printArray
):- 遍历数组并打印每个元素。
运行结果
运行上述代码后,您将看到以下输出:
原始数组:
164 134 25 12 22 111 90
排序后的数组:
12 22 25 90 111 134 164
个人小笔记
未完待续