当前位置:首页算法 > 正文

《野牛程序员·算法启蒙课》之——选择排序,挑来挑去挑出最小的

作者:野牛程序员: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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 《野牛程序员·算法启蒙课》之——选择排序,挑来挑去挑出最小的
  • 相关推荐

    最新推荐

    热门点击