時間複雜度爲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) )