时间复杂度为O(n^2),基本思想就是将无序序列插入到有序序列中。例如要将数组arr=[4,2,8,0,5,1]排序,可以将4看做是一个有序序列(图中用蓝色标出),将[2,8,0,5,1]看做一个无序序列。无序序列中2比4小,于是将2插入到4的左边,此时有序序列变成了[2,4],无序序列变成了[8,0,5,1]。无序序列中8比4大,于是将8插入到4的右边,有序序列变成了[2,4,8],无序序列变成了[0,5,1]。以此类推,最终数组按照从小到大排序。
def insert_sort(list):
_len = len(list)
for i in range(1, _len):
temp = list[i]
for j in range(i, -1, -1):
# j为当前位置,试探j-1位置
if temp < list[j - 1]:
list[j] = list[j - 1]
else:
# 位置确定为j
break
list[j] = temp
return list
list = [1, 10, 3, 5, 2, 4, 6, 7, 9, 8]
print( insert_sort(list) )