def insertion_sort(nums):
for i in range(1, len(nums)): # 未排序序列
cur_index = i
while i > 0 and nums[cur_index] < nums[cur_index - 1]:
nums[cur_index - 1], nums[cur_index] = nums[cur_index], nums[cur_index - 1]
cur_index -= 1
遍历未排序序列,将扫描到的每个元素插入有序序列的适当位置。
原理与选择/冒泡排序不同,并不需要求出最值,次最值,次次最值.....而是使用了很巧妙的方法,将第一个元素组成的序列看作一个有序序列。随后的每一个值插入序列时都要保证其顺序,这样最终获得的结果也是一个有序序列。