思想:
- 维持原地排序
- 整个列表分为2部分,做部分为排序好的;右边为尚未排序的,
- 每次抽取右边的第一张牌,与左边的牌进行对比。
代码:
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' - 保持原地排序 - 摸牌的次数 - 如何移动牌 ''' def insert_sort(li): for i in range(1, len(li)): # 摸牌的次数 for j in range(i, 0, -1): # 在排好序的左边,将抽到的牌,从右向左比较 if li[j] < li[j-1]: li[j],li[j-1] = li[j-1],li[j] #print('第{}次排序: {}'.format(i, li)) import random li = list(range(1000)) random.shuffle(li) print(f'原始列表为:{li}') insert_sort(li) print(li)