"""
插入排序:
其思想类似于手中有一些乱序的扑克牌,要将其整理为有序的。
首先拿第二张,与之前一张对比,小于第一张时交换顺序,大于时保持不动。
这样i轮过后,第i大的牌就会出现在第i个位置。
"""
import random
def insertion_sort(L):
#从下标1开始遍历
for j in range(1,len(L)):
key = L[j]
#取前一个元素的下标
i = j - 1
while i >= 0 and L[i] > key:
#判断前一个元素大于当前元素时
#当前元素指向上一个元素
L[i+1] = L[i]
i = i - 1
#如果判断成功,则上一个元素指向当前元素,否则引用不变
L[i+1] = key
return L
def test_sort():
L = list(range(10))
L = random.shuffle(L)
assert insertion_sort(L) == L
if __name__ == "__main__":
test_sort()
本文深入讲解了插入排序算法的工作原理,通过类比整理扑克牌的过程,详细解释了如何通过比较和交换使数组变为有序。文章提供了Python实现代码,并通过一个测试函数验证了排序算法的正确性。
91

被折叠的 条评论
为什么被折叠?



