《野牛程序员·算法启蒙课》之——选择排序,挑来挑去挑出最小的
作者:野牛程序员:2025-04-24 18:39:23算法阅读 1986
《野牛程序员·算法启蒙课》之——选择排序,挑来挑去挑出最小的
欢迎来到《野牛程序员·算法启蒙课》之——选择排序,挑来挑去挑出最小的~
🎉 选择排序是啥?用故事讲给孩子听:
想象一群小朋友在操场上排队比赛跳绳,老师说:“来,咱们从最矮的开始排,谁最矮站最前面!”
于是,每一轮比赛都要“挑”出剩下孩子中最矮的,拉到队伍前面。排队现场像是在选班长,一轮一轮“海选”,直到每个人都站好了自己的位置。
🧠 选择排序的核心思想一句话:
从未排序的部分中找最小的,放到已排好队伍的后面。
📚 小学生能听懂的步骤:
🔹 从第一个数开始,往后找“谁最小”
🔹 找到最小的,和第一个数换位置
🔹 然后从第二个开始,继续找最小的,换到第二个位置
🔹 重复这个过程,直到排好所有人
📌 C++ 代码来啦(通俗易懂版):
#include <iostream> using namespace std; void selectionSort(int arr[], int n) { for (int i = 0; i < n - 1; ++i) { int minIndex = i; // 先假设当前位置是最小的 for (int j = i + 1; j < n; ++j) { // 找真正的最小值 if (arr[j] < arr[minIndex]) { minIndex = j; // 更新最小值下标 } } // 如果找到了更小的,换一下 if (minIndex != i) { int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } } void printArray(int arr[], int n) { for (int i = 0; i < n; ++i) cout << arr[i] << " "; cout << endl; } int main() { int numbers[] = {64, 25, 12, 22, 11}; int length = sizeof(numbers) / sizeof(numbers[0]); cout << "排序前:"; printArray(numbers, length); selectionSort(numbers, length); cout << "排序后:"; printArray(numbers, length); return 0; }
📊 轮次演示:
轮次 | 数组状态 | 说明 |
---|---|---|
初始 | 64, 25, 12, 22, 11 | 原始队列 |
第1轮 | 11, 25, 12, 22, 64 | 找到最小11,和64交换 |
第2轮 | 11, 12, 25, 22, 64 | 找到最小12,和25交换 |
第3轮 | 11, 12, 22, 25, 64 | 找到最小22,和25交换 |
第4轮 | 11, 12, 22, 25, 64 | 已经排好,不换了 |
结束 | 11, 12, 22, 25, 64 | 排序完成 ✅ |
🎯 选择排序适合小朋友的理由:
✅ 每次选出最小值,步骤有逻辑
✅ 不像冒泡那样换来换去,思路更“安静”
✅ 适合讲故事和动画演示
📣 小挑战:
想象有五个小朋友身高分别是:130, 120, 140, 125, 110(单位:厘米)
自己写一段选择排序代码,帮他们按从矮到高排好队~
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:《野牛程序员·算法启蒙课》之——冒泡排序
- 下一篇: