原理:
- 依次从未排序list中取数据去构建有序数列
- 拿出的新数据依次与有序数列中数据比较找到自己的位置(可看做打扑克放牌)
代码实现
#直接插入排序
def insert_sort(num_list):
#第一个数认为为有序list,其他的数据认为为无序list
for i in range(1,len(num_list)):
#拿出无序list的第一个数
num = num_list[i]
#有序数列的最后一个数的index
j = i - 1
#从后至前循环有序list,依次与新num比较,直到比较的数字小于等于新num
while j >= 0 and num_list[j] > num:
#比较数字大于新num时,把该值向后移动一位
num_list[j + 1] = num_list[j]
j -= 1
#把新数据插入到有序数列空出的位置
#由于比较结束后仍旧执行了依次j-1,所以空的索引位置是j+1
num_list[j + 1] = num
return num_list
if __name__ == '__main__':
num_list = [1,4,6,7,9,3]
result = insert_sort(num_list)
print(result) #[1, 3, 4, 6, 7, 9]