当前位置:首页python > 正文

野牛程序员讲少儿编程之插入排序(python版):整理书包的神奇算法!

作者:野牛程序员:2025-03-17 10:45:28python阅读 2049
野牛程序员讲少儿编程之插入排序(python版):整理书包的神奇算法!

🚀 🦬野牛程序员讲少儿编程之插入排序:整理书包的神奇算法!🎒

🤔 孩子:为啥要学插入排序?

"书包里的书乱糟糟,每次找东西都要翻半天!"
"妈妈说我收拾玩具太慢!"
"数学考试成绩排名是怎么排的?"

这些生活中的"排序"问题,其实都可以用编程来解决!今天就来跟野牛程序员学一个超级实用的排序方法——插入排序(Insertion Sort)


🧐 插入排序到底是啥?

插入排序就像整理书包、整理扑克牌一样:

  • 每次拿起一本新书(或者一张新牌),找到合适的位置插进去

  • 确保手上的书(牌)始终是有序的

📌 插入排序的基本步骤

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

  2. 拿当前元素和前面的比较,找到合适位置插入。

  3. 大的往后挪,小的往前插,保证前面部分始终有序。

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


💡 举个例子

假设有一个乱序的列表:

arr = [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排序完成 ✅

🐍 Python 代码实现

来看看 Python 代码,如何让计算机像整理书包一样,把数组排好顺序!

def insertion_sort(arr):
    n = len(arr)
    
    for i in range(1, n):  # 从第二个元素开始
        key = arr[i]  # 选定当前要插入的元素
        j = i - 1

        # 向左移动比 key 大的元素
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]  # 把大元素往后挪
            j -= 1

        arr[j + 1] = key  # 把 key 放到合适位置
        
        # 打印当前轮次的排序状态
        print(f"第 {i} 轮排序: {arr}")

# 测试代码
arr = [64, 25, 12, 22, 11]
print("原始数组:", arr)
insertion_sort(arr)
print("排序后数组:", arr)

🎬 代码运行效果

运行后,会看到完整的排序过程:

原始数组: [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²),比不上 快速排序、归并排序 这些大佬算法。


🔥 拓展挑战

学会了插入排序,可以试试:

  • 挑战更大的数组,比如 100 个随机数排序!

  • 用 Python 的 sorted()list.sort() 试试更快的排序方法

  • 尝试用反向排序(从大到小排序)。

  • 画个图,看排序过程!可以用 matplotlib 做可视化!


🎯 野牛程序员总结

插入排序 = 整理书包的技能!让孩子学会插入排序,不仅能用编程帮忙整理数据,还能培养逻辑思维,让代码变得更聪明!

学会插入排序后,试试:

  • 🚀 冒泡排序(Bubble Sort)

  • 🚀 选择排序(Selection Sort)

  • 🚀 快速排序(Quick Sort)

💡 关注我,跟野牛程序员学编程就像魔法,学会排序,让数据变得井然有序! 🏆


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 野牛程序员讲少儿编程之插入排序(python版):整理书包的神奇算法!
  • 相关推荐

    最新推荐

    热门点击