思路:
- 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
- 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
arr = [12, 11, 13, 5, 6]
for i in range(0,len(arr)-1):
preIndex = i#首先判断前两个位置的顺序是不是对的
current = arr[i+1] #保存当前待插入的数
while preIndex >= 0 and arr[preIndex] > current:# 将比 current 大的元素向后移动
arr[preIndex+1] = arr[preIndex]#就是当当前值比后面的值打的时候,我们需要交换位置,让后面的值等于当前值,同时,我们的索引坐标需要往前移动一个位置,这样就空出来了新的一个位置
print(arr)
preIndex-=1
print(preIndex)
arr[preIndex+1] = current # 这个时候的preIndex已经减过一次1,也就是待插入的数的正确位置
print(arr[preIndex+1])