old_num = [99,88,128,23,18,75,8,12,30,13,19,87]
new_num = [0] + old_num
#[0, 99, 88, 128, 23, 18, 75, 8, 12, 30, 13, 19, 87]
#[88, 99, 88, 128, 23, 18, 75, 8, 12, 30, 13, 19, 87] 88位哨兵 将原列表88前的依次从右往左和哨兵88比较
#[128, 88, 99, 128, 23, 18, 75, 8, 12, 30, 13, 19, 87]
l = len(new_num)
print(new_num)
for i in range(2,l): #从2开始
j = i -1
new_num[0] = new_num[i] #索引为i的数依次设置为哨兵
print(new_num[0]) #大数右移,
if new_num[j] > new_num[0]:
while new_num[j] > new_num[0]: #当有序序列中大于哨兵的数时右移,小于哨兵的数退出循环
new_num[j+1] = new_num[j] #将有序序列中依次右移
j -= 1
new_num[j+1] = new_num[0] #放置哨兵
print(new_num)
new_num.pop(0) #删除最后的哨兵
print(new_num)