思考一下5和7数字调换的可能即可。。
5是手里的牌,7是拿出来准备插入的牌…
然后把四拿出来…
把四放在一个变量存起来,然后5,7往右边挪…四放进来
然后七往右边挪一下…
依次进行…
写代码怎么挪
我要摸多少次牌?
n-1次
插入排序,复杂度O(n平方)
初始时手里(有序区)只有一张牌
每次(从无序区)摸一张牌,插入到手里已有牌的正确位置
示例代码
def insert_sort(li):
for i in range(1,len(li)):#i表示摸到的牌的下标
tmp = li[i]
j = i - 1 #j指的是手里的牌
#循环就是找插入的位置
while li[j] > tmp and j >= 0:
li[j+1] = li[j]
j -= 1
li[j+1] = tmp
print(li)
return li
测试
li = [3,4,5,6,1,7,2,8,9]
li = insert_sort(li)
print(li)
打印结果
[3, 4, 5, 6, 1, 7, 2, 8, 9]
[3, 4, 5, 6, 1, 7, 2, 8, 9]
[3, 4, 5, 6, 1, 7, 2, 8, 9]
[1, 3, 4, 5, 6, 7, 2, 8, 9]
[1, 3, 4, 5, 6, 7, 2, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]