当前位置:首页C++ > 正文

野牛程序员讲少儿编程之插入排序(C++ 版)-整理扑克牌的艺术!

作者:野牛程序员:2025-03-17 10:32:39C++阅读 2067
野牛程序员讲少儿编程之插入排序(C++ 版)-整理扑克牌的艺术!

🤔 孩子:排序有啥用?

"整理书包、给玩具分类、比赛排名,这些不都是排序嘛!"

今天,来跟野牛程序员学一种超级实用的排序算法——插入排序(Insertion Sort)!
它就像整理扑克牌一样,拿到一张新牌,找到合适的位置插进去,让手上的牌保持从小到大有序。


🎯 插入排序到底是个啥?

插入排序的核心思想就两个字:插入
想象手里有一叠扑克牌,正在从左到右整理,每次拿起一张新牌,把它插入到正确的位置,让整个牌序保持有序。

插入排序的步骤如下:

  1. 从第二个元素开始(第一个默认是有序的)。

  2. 把当前元素拿出来,和前面的已经排序的部分进行比较

  3. 找到比它小的元素后,把它插入到正确的位置

  4. 重复这个过程,直到所有元素都放到正确的位置上


🏆 可视化理解(手动模拟一遍)

假设有个数组 [64, 25, 12, 22, 11],用插入排序给它排序。

轮次数组状态说明
初始64, 25, 12, 22, 11初始数组
第 1 轮25, 64, 12, 22, 1125 插入到 64 前面
第 2 轮12, 25, 64, 22, 1112 插入到 25 前面
第 3 轮12, 22, 25, 64, 1122 插入到 25 前面
第 4 轮11, 12, 22, 25, 6411 插入到最前面
结束11, 12, 22, 25, 64排序完成 ✅

🔥 C++ 代码示例

学了编程的孩子是未来的黑客!
来看 C++ 代码,理解如何让计算机帮忙排序!

#include <iostream>
using namespace std;

// 插入排序函数
void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) { // 从第二个元素开始
        int key = arr[i]; // 选定当前要插入的元素
        int j = i - 1;

        // 向左移动比 key 大的元素
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j]; // 把大元素往后挪
            j--;
        }
        arr[j + 1] = key; // 插入到正确位置

        // 打印当前轮次的排序状态
        cout << "第 " << i << " 轮排序: ";
        for (int k = 0; k < n; k++) {
            cout << arr[k] << " ";
        }
        cout << endl;
    }
}

// 测试代码
int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);

    cout << "原始数组: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    insertionSort(arr, n); // 调用排序函数

    cout << "排序后数组: ";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}

💡 野牛程员运行效果

运行后,能清楚看到排序的过程:

原始数组: 64 25 12 22 11
第 1 轮排序: 25 64 12 22 11
第 2 轮排序: 12 25 64 22 11
第 3 轮排序: 12 22 25 64 11
第 4 轮排序: 11 12 22 25 64
排序后数组: 11 12 22 25 64

🤔 野牛程序员谈插入排序的优势

简单易懂,适合少儿编程
适合少量数据(几十个元素以内速度还不错)。
稳定排序(不会改变相同元素的相对顺序)。

但也有个小缺点: 🔴 对于大数据量来说,速度比较慢,因为它的时间复杂度是 O(n²)。如果数据量很大,可能要考虑更高级的算法,比如 快速排序、归并排序


🎯 野牛程序员总结

插入排序 = 整理扑克牌!
让孩子学会插入排序,就能用计算机像整理书包、给玩具分类一样,让数据变得整整齐齐!

学会插入排序后,可以挑战: 🔥 冒泡排序(Bubble Sort)
🔥 选择排序(Selection Sort)
🔥 快速排序(Quick Sort)

关注我,跟着野牛程序员探索编程的世界,乐趣无穷! 🚀


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 野牛程序员讲少儿编程之插入排序(C++ 版)-整理扑克牌的艺术!
  • 相关推荐

    最新推荐

    热门点击