插入排序,第一次认为第一个数字是有序的,然后用第二个数和第一个数作比较,d当第一个数字大的时候,两个数字互换,然后第三个数字和第二比较,当第三个数字小的时候,在和第一个数字比较,当地三个数字小的时候,就和第一个数字互换。以此类推,以后的数字先和它前面的一个数字作比较,当其小的时候,再依次和左边的比较。
def insert_sort(array):
n = len(array)
for j in range(1,n):
i = j
while i > 0:
if array[i] < array[i-1]:
array[i], array[i-1] = array[i-1], array[i]
i -= 1
else:
break
return array
if __name__ == "__main__":
lis = [49, 38, 65, 97, 76, 13, 27, 49]
print(insert_sort(lis))
最优时间复杂度:O(n) (升序排列,序列已经处于升序状态)
最坏时间复杂度:O(n2)
稳定性:稳定