'''
直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表
'''
# 比较官方的直接插入法
# 注释掉两行,结果是一样的,个人认为这两行无用,接受反驳
def InsertSort(list):
count = 0
for i in range(1,len(list)):
# if list[i]<list[i-1]:
r = list[i]
j= i-1
# list[i] = list[i-1]
while r<list[j] and j>=0:
count+=1
list[j+1] = list[j] # 元素后移
j-=1
list[j+1] = r
return count
# 用临时变量来记录list[i]的合适位置
# 从i-1到0循环,大于list[i]的直接后移,比较过程中记录list[i]的合适位置
# 上面的while循环比InsertSort0的for循环效率更高
def InsertSort0(list):
count = 0
for i in range(1,len(list)):
min = i
r = list[i]
for j in range(i-1,-1,-1):
count+=1
if r<list[j]:
min = j # 记录合适位置
list[j+1] = list[j] #元素后移
list[min] = r
return count