《野牛程序员·算法启蒙课》之——冒泡排序
作者:野牛程序员:2025-04-24 08:42:41算法阅读 2229
《野牛程序员·算法启蒙课》之——冒泡排序
欢迎来到《野牛程序员·算法启蒙课》之——冒泡排序,冒出来的可不只是气泡,还有编程智慧!
? 小朋友都能听懂的算法故事 · 冒泡排序篇(C++ 版)
? 什么是冒泡排序?
想象有一群调皮的数字,像澡堂里洗澡的小朋友,水里一泡就开始比谁大。大的数字就像浮力大的泡泡,一次次往上冒,小的就乖乖待在底下——最后,小数字全在前面,大数字全在后面,队形整齐好看得很!
? 冒泡排序是怎么“泡”起来的?
冒泡排序的核心思想就是一句话:相邻两个比一比,谁大谁往后挪。
每一轮都像“打擂台”,从头到尾“哒哒哒”地比一圈,把最大的那个“送”到最后面,然后下一轮就少比一个数,直到全部排序完毕。
? 算法步骤用小学生语言讲讲:
? 第1轮:从第一个数字开始,两个两个比,谁大谁靠后,一路比到最后,大哥排队尾。
? 第2轮:再从头比到倒数第二个,新的大哥又被送到最后第二位。
? 一直到只剩下一个数,那就不用比啦!
? C++ 代码来啦!
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n) {
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;
}
}
}
}
// 打印数组的小助手
void printArray(int arr[], int n) {
for (int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int numbers[] = {5, 2, 9, 1, 6};
int length = sizeof(numbers) / sizeof(numbers[0]);
cout << "排序前:";
printArray(numbers, length);
bubbleSort(numbers, length);
cout << "排序后:";
printArray(numbers, length);
return 0;
}? 如果数组是:
原始:5 2 9 1 6
第一轮后:2 5 1 6 9 (9到了最后)
第二轮后:2 1 5 6 9
第三轮后:1 2 5 6 9
最后就排好了!
? 冒泡排序适合小朋友的原因:
✅ 逻辑清晰
✅ 步骤重复,容易理解
✅ 可配合动画做可视化学习
? 课后练习:
自己写个数组,把它冒泡排序试试看!可以试试把数组里换成小朋友的身高,用程序让他们按从矮到高排队。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

