野牛程序员讲少儿编程之插入排序(python版):整理书包的神奇算法!
作者:野牛程序员:2025-03-17 10:45:28python阅读 2049
野牛程序员讲少儿编程之插入排序(python版):整理书包的神奇算法!
🚀 🦬野牛程序员讲少儿编程之插入排序:整理书包的神奇算法!🎒
🤔 孩子:为啥要学插入排序?
"书包里的书乱糟糟,每次找东西都要翻半天!"
"妈妈说我收拾玩具太慢!"
"数学考试成绩排名是怎么排的?"
这些生活中的"排序"问题,其实都可以用编程来解决!今天就来跟野牛程序员学一个超级实用的排序方法——插入排序(Insertion Sort)!
🧐 插入排序到底是啥?
插入排序就像整理书包、整理扑克牌一样:
每次拿起一本新书(或者一张新牌),找到合适的位置插进去。
确保手上的书(牌)始终是有序的。
📌 插入排序的基本步骤
从第二个元素开始(第一个默认是有序的)。
拿当前元素和前面的比较,找到合适位置插入。
大的往后挪,小的往前插,保证前面部分始终有序。
重复这个过程,直到所有元素都放到正确位置。
💡 举个例子
假设有一个乱序的列表:
arr = [64, 25, 12, 22, 11]
用插入排序整理它的过程如下:
轮次 | 数组状态 | 说明 |
---|---|---|
初始 | 64, 25, 12, 22, 11 | 初始数组 |
第 1 轮 | 25, 64, 12, 22, 11 | 25 插入到 64 前面 |
第 2 轮 | 12, 25, 64, 22, 11 | 12 插入到 25 前面 |
第 3 轮 | 12, 22, 25, 64, 11 | 22 插入到 25 前面 |
第 4 轮 | 11, 12, 22, 25, 64 | 11 插入到最前面 |
结束 | 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
