插入排序的过程就像整理一手扑克
将列表的前半部分看成有序的,当然这部分一开始是空的,或者就只有第一个数
继续用扑克的例子来讲
从第一张开始,挑出来,放到最前边,当然这步可以不做
然后挑出第二张,和它前边的牌比较,如果前边的扑克较大,则将前边的扑克向后(右)移一张将挑出的牌放到这张扑克的位置
推广到第n张,挑出第n张扑克,依次和它前边的扑克比较,如果前边的扑克大,则后移,直到第n-i张小于等于第n张,将第n张扑克放到第n-i张扑克的后边
a = [9, 78, 54, 91, 86, 53, 88, 66, 46, 15]
for i in range(len(a)):
# 取出要插入的数
temp = a[i]
"""for循环实现"""
# for j in range(i-1, -1, -1):
# # 向前寻找如果第j个数比取出的数大,第j个数向后移一位
# if a[j] > temp:
# a[j+1] = a[j]
# else:
# a[j+1] = temp
# break
"""while循环实现"""
j = i - 1
while j >= 0 and a[j] > temp:
a[j + 1] = a[j]
j = j-1
a[j + 1] = temp
print(a)