【漫画算法】插入排序:插入宝石的传说

简介: 【漫画算法】插入排序:插入宝石的传说

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣!

期待与您一起探索技术、持续学习、一步步打怪升级 欢迎订阅本专栏❤️❤️

引言

欢迎来到《插入宝石的传说》,一个充满魔法与冒险的世界。在这里,我们将通过一个生动的故事来了解一种基本而重要的算法——插入排序。无论你是算法新手,还是编程老手,都能在这个故事中找到乐趣和启发。

故事背景

很久很久以前,在一个神秘的王国中,有一位勇敢的宝石猎人——艾拉。艾拉的任务是收集并整理各种珍贵的宝石,这些宝石可以用来保护王国免受邪恶力量的侵袭。但是,宝石必须按照一定的顺序排列,才能发挥它们的最大力量。这就是艾拉的挑战,也是我们的任务——学习如何通过插入排序来将宝石排列整齐。

插入排序的魔法

插入排序是一种简单直观的排序算法,就像艾拉将宝石一颗一颗地插入到正确的位置。它的工作原理如下:

  1. 从第一个未排序的宝石开始,逐个宝石进行处理。
  2. 将当前宝石与前面的宝石比较,找到其正确的位置。
  3. 将当前宝石插入到这个位置,确保前面的宝石依然有序。
  4. 重复这个过程,直到所有宝石都被排列整齐。

让我们通过一个漫画故事来深入理解这个过程。

插入宝石的传说

第一幕:宝石猎人艾拉

image.png

艾拉发现了一个充满宝石的洞穴,每一颗宝石都代表着一种神秘的力量。然而,这些宝石是无序地堆积在一起的。为了发挥宝石的最大力量,艾拉决定用插入排序的魔法将它们排列整齐。

第二幕:第一颗宝石的插入

艾拉从洞穴中拿起第一颗宝石,将它放在架子上。因为只有一颗宝石,它自然是有序的。

第三幕:第二颗宝石的插入

接下来,艾拉拿起第二颗宝石。这颗宝石需要和架子上的第一颗宝石比较,找出它的位置。如果第二颗宝石比第一颗宝石小,就将它插入第一颗宝石的前面;否则,就插入它的后面。

第四幕:第三颗宝石的插入

然后,艾拉拿起第三颗宝石。她需要将这颗宝石与前两颗宝石逐一比较,找到合适的位置进行插入。这个过程继续进行,直到所有的宝石都被插入到正确的位置。

继续比较

代码实现

让我们看看这个魔法的具体实现。在编程世界中,这个魔法称为插入排序算法。

原理

插入排序(Insertion Sort)是一种简单直观的排序算法,类似于打扑克牌时整理手中的牌。它的工作原理是构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序的关键是逐个处理数据,并将每个数据插入到已经排序好的部分的适当位置。

算法流程

初始化:

  1. 从第二个元素开始,将当前元素与已排序部分的元素逐一比较,找到其正确的位置并插入。
    插入过程:
  2. 将当前元素与前一个元素比较,如果当前元素小于前一个元素,则交换位置。
    重复上述步骤,直到当前元素大于或等于前一个元素,或已经比较到第一个元素。
    重复步骤:
  3. 对于每个未排序的元素,重复上述插入过程,直到所有元素都插入到正确的位置。
def insertion_sort(gems):
    # 遍历每个宝石,从第二个开始
    for i in range(1, len(gems)):
        current_gem = gems[i]
        j = i - 1
        # 将当前宝石与前面的宝石进行比较,找到正确的位置
        while j >= 0 and current_gem < gems[j]:
            gems[j + 1] = gems[j]
            j -= 1
        gems[j + 1] = current_gem
    return gems
# 示例
gems = [5, 3, 8, 6, 2]
sorted_gems = insertion_sort(gems)
print(sorted_gems)  # 输出: [2, 3, 5, 6, 8]

总结

在这个冒险故事中,我们通过艾拉的宝石排序任务,学习了插入排序算法。插入排序就像将每颗宝石放入正确位置一样,简单而直观。希望这个故事不仅帮助你理解了插入排序的原理,还激发了你对算法学习的兴趣。

延伸阅读

  • 了解其他排序算法,例如选择排序、冒泡排序和快速排序。
  • 探索插入排序在实际应用中的使用场景,例如数据整理和文本编辑器中的自动排序功能。
  • 尝试编写自己的算法故事,将复杂的算法通过有趣的故事和插图展示出来。

欢迎继续关注我们的《漫画算法》系列,让我们一起在充满魔法与冒险的世界中学习更多的算法知识!

🌹🌹如果觉得这篇文对你有帮助的话,记得一键三连关注、赞👍🏻、收藏是对作者最大的鼓励,非常感谢 ❥(^_-)

❤️❤️作者知识有限,如有错误,请各位大佬评论区批评指正,不胜感激❥(^_-)

欢迎关注微信公众号 数据分析螺丝钉

相关文章
|
2月前
|
算法 搜索推荐 C#
|
3月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
3月前
|
算法 搜索推荐
数据结构与算法-插入排序
数据结构与算法-插入排序
28 2
|
3月前
|
存储 算法 数据可视化
【漫画算法】哈希表:古代皇帝的秘密魔法书
【漫画算法】哈希表:古代皇帝的秘密魔法书
|
3月前
|
人工智能 搜索推荐 JavaScript
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
心得经验总结:排序算法:插入排序法(直接插入法和希尔排序法)
26 0
|
3月前
|
机器学习/深度学习 搜索推荐 算法
【C/排序算法】:直接插入排序和希尔排序
【C/排序算法】:直接插入排序和希尔排序
29 0
|
3月前
|
搜索推荐 算法
排序算法之插入排序
排序算法之插入排序
32 0
|
3月前
|
搜索推荐
排序算法---插入排序-----详解&&代码
排序算法---插入排序-----详解&&代码
|
3月前
|
算法 搜索推荐 数据可视化
【漫画算法】指挥官的排序战术:快速排序算法解密
【漫画算法】指挥官的排序战术:快速排序算法解密
|
3月前
|
人工智能 算法 C语言
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
31 0