冒泡排序 的基本思想就是让“大泡泡”不断往上浮,直到整个数组像泡泡浴一样排序好!🎉💦
先看看代码:
public class BubbleSortWithEmoji {
// 冒泡排序方法,传入需要排序的数组
public static void bubbleSort(int[] arr) {
int n = arr.length; // 获取数组的长度,告诉你有多少泡泡在里面 🛁
// 外层循环:我们要走几轮,直到所有泡泡都浮上来 🎈✨
for (int i = 0; i < n - 1; i++) {
// 内层循环:负责两两比较,把大的泡泡冒上去 🎈⬆️
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;
}
}
}
}
// 辅助方法:打印数组中的所有泡泡 🎈
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " "); // 每个泡泡用空格分开 🛁
}
System.out.println(); // 换行,泡泡展示完毕 🌟
}
// 测试冒泡排序的方法:Let's Bubble! 🛁🎉
public static void main(String[] args) {
int[] arr = {8, 3, 5, 1, 9, 6}; // 这里有一堆泡泡 🎈
// 打印泡泡排序前的样子 🌪️
System.out.println("排序前的数组:");
printArray(arr);
// 执行冒泡排序 🛁✨
bubbleSort(arr);
// 打印泡泡排序后的样子 🎉🎈
System.out.println("排序后的数组:");
printArray(arr);
}
}
详细解释 + Emoji讲解 🥳
步骤 1:初始化💻
我们有一个数组 [8, 3, 5, 1, 9, 6]
,这些就是我们需要排序的泡泡🛁。
你可以想象每个数字就是一个大小不同的泡泡🎈,现在我们要让大的泡泡慢慢浮到顶上去⬆️,小泡泡留在下面⬇️。
步骤 2:外层循环⏳
我们要走几轮才能让所有泡泡浮到正确的位置。所以这里的外层循环就是控制我们要比较几次✍️。比如第一轮会把最大的泡泡浮到数组的最右边🏁。
步骤 3:内层循环⚙️
在每一轮中,内层循环负责两两比较相邻的泡泡👀,看哪个泡泡比较大。如果左边的泡泡比右边的大💥,就交换位置🔄,让大的往上浮⬆️。重复这个过程直到没有泡泡需要交换为止。
步骤 4:交换泡泡🎈
每当我们发现一个大泡泡在左边,就会把它和右边的小泡泡交换位置💥。就像泡泡浴中的泡泡一样,大的泡泡会慢慢浮上去,小泡泡则留在下面🛁。
步骤 5:一轮结束🏁
每一轮内层循环结束后,最大泡泡就会被移到最后的正确位置✨。接着,我们忽略这个已经排序好的泡泡,对剩下的部分继续进行排序,直到整个数组都排序好🎉。
Emoji解释的运行结果 🌈✨
排序前的数组:
8 3 5 1 9 6 🛁
排序后的数组:
1 3 5 6 8 9 🎉✨
通俗版总结:
- 冒泡排序就像泡泡浴🛁:我们不断比较相邻的泡泡,较大的泡泡慢慢往上浮,最后浮到最上面🎈。
- 每一轮的冒泡过程⬆️:一次次比较相邻的泡泡,把大的换到右边(也就是后面)去。
- 多轮比较后🎉:直到所有泡泡都按照从小到大的顺序排好了✅。