实现(第 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]
每一步中,我们都会选一张牌(元素),将它与已经排好序的元素进行比较,然后把它放到正确的位置上,必要时移动其他元素。我们会重复这个过程,直到整个数组都排好序。
挑战
简单现在,实现内部循环,它负责对每个元素进行排序。
在函数 insertionSort 中完成排序。
函数还应在最后逐个输出数组中的元素,每个元素之间换一行。
参考前面的课和提示 :)
亲手试试
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
print(key)
插入排序:数据结构与算法系列中的所有课
自己练习: C 在线编译器