冒泡排序
502字约2分钟
2024-12-02
排序的介绍
冒泡排序
冒泡排序的示意图
public class Sort {
public static void main(String[] args) {
// 冒泡排序
// 数组为{23, 45, 12, 67, 9}
// 化繁为简
// 首先定义一个数组,然后在把上面准备好的元素定义到该数组中
// 然后利用循环语句进行判断
// 根据冒泡排序分析图可以看出
// 总共有 4 次排序(也就是总元素的个数减1)
// 第一次排序有 4 次比较,第二次排序有 3 次比较,第三次排序有 2 次比较,第四次排序有 1 次比较
// 从上排序可以发现的规律,第一次排序是 4 - 0, 第二次排序是 4 - 1, 第三次排序是 4 - 2, 第四次排序是 4 - 3
// 所以得到如下代码
int[] arr = {23, 45, 12, 67, 9, -1, -110, 300, -500};
// int[] arr = {1, 2, 3, 4, 5};
int b = 0;
// arr.length - 1 表示的是 4 次排序(也就是总元素的个数减1)
for (int y = 0; y < arr.length - 1; y++) {
int a = 0;
// 因为每次排序中的比较的次数都在不断的减1,所以 arr.length - 1 - y 的作用就是这个
for (int i = 0; i < arr.length - 1 - y; i++) {
if (arr[i] > arr[i + 1]) {
b = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = b;
a++;
}
}
System.out.println("\n======第" + (y + 1) + "轮循环======");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
// 如果 a 没有自增,就说明该数组中的元素是有序的,所以就没有必要继续比较的意义了
// 如果说该数组中的元素是无序的,那么下面这条if语句就不会被执行
// 如果是有序的,则会执行,但要输出该循环循环了多少次,所以把该代码放在最后
if (a == 0) {
break;
}
}
}
}