Menu
CoddyTech

实现(第 2 部分)

Coddy 插入排序:数据结构与算法系列 课程的第 6 课,共 9 课。

场景:对 [5, 2, 9, 1, 5] 排序

步骤 1:初始状态

  • 原始数组:[5, 2, 9, 1, 5]
  • 可以把它想象成我们手中的一组牌(或一个数字数组)。

步骤 2:第一个元素(i=1, key=2)

  • 我们从第二张牌(元素)开始:key = 2。
  • 将 2 和 5(目前唯一已排序的元素)进行比较。
  • 因为 2 更小,所以我们将 5 向右移动,并将 2 插入它原来的位置。
  • 更新后的数组:[2, 5, 9, 1, 5]

步骤 3:第二个元素(i=2, key=9)

  • 移到下一张牌:key = 9。
  • 将 9 和 5 进行比较。
  • 因为 9 更大,所以不需要移动。
  • 更新后的数组:[2, 5, 9, 1, 5](没有变化)

步骤 4:第三个元素(i=3, key=1)

  • 移到下一张牌:key = 1。
  • 先将 1 和 9 进行比较,再和 5 进行比较。
  • 将 9 和 5 向右移动,为 1 腾出位置。
  • 更新后的数组:[1, 2, 5, 9, 5]

步骤 5:第四个元素(i=4, key=5)

  • 移到下一张牌:key = 5。
  • 将 5 和 9 进行比较。
  • 因为 5 更小,所以不需要移动。
  • 更新后的数组:[1, 2, 5, 9, 5](没有变化)

步骤 6:第五个元素(i=5, key=5)

  • 移到最后一张牌:key = 5。
  • 将 5 和 9 进行比较。
  • 因为 5 更小,所以不需要移动。
  • 更新后的数组:[1, 2, 5, 5, 9]

最终结果:

  • 已排序的数组:[1, 2, 5, 5, 9]

每一步中,我们都会选一张牌(元素),将它与已经排好序的元素进行比较,然后把它放到正确的位置上,必要时移动其他元素。我们会重复这个过程,直到整个数组都排好序。

challenge icon

挑战

简单

现在,实现内部循环,它负责对每个元素进行排序。

 

在函数 insertionSort 中完成排序。

函数还应在最后逐个输出数组中的元素,每个元素之间换一行。

参考前面的课和提示 :)

亲手试试

def insertionSort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        print(key)

插入排序:数据结构与算法系列中的所有课

自己练习: C 在线编译器