插入排序(直接插入排序)
定义
将无序区的元素逐个抽取,放到有序区。有序区初始时,会有一个随机从列表中拿取的元素,作为比较。
当从无序区拿一个元素后,就和有序区的元素逐个做比较,放到合适的位置。
def insert_sort(li):
for i in range(1, len(li)):
temp = li[i] # 无序区抽取一个元素
j = i-1 # 因为i是从1开始,所以,j就是第0个元素的下标。也是有序区的唯一元素
while j >= 0 and li[j]>temp: # 如果temp更小,则被比较的数需要往后移一位
li[j+1] = li[j] # 这里就是往后移动一位
j -= 1 # 然后在比较下一个有序区的元素。因为有序区的元素是逐渐增加的。
li[j + 1] = temp # 最后需要把无序区抽取的元素放入有序区的位置

浙公网安备 33010602011771号