插入排序原理
""" 插入排序说明:参考放扑克牌的插入方式 1、手里的牌都是有序队列->即插入到最左边的队列中 2、每次起一张新的牌->每趟从剩余数据里面挑出最靠前的一个 3、新的牌插入到合适的位置 """
# -*- coding: utf-8 -*
# 开发人员:charles
# 开发时间:2022/5/20 16:13
# 文件名称:insert_sort.py
"""
插入排序说明:参考放扑克牌的插入方式
1、手里的牌都是有序队列->即插入到最左边的队列中
2、每次起一张新的牌->每趟从剩余数据里面挑出最靠前的一个
3、新的牌插入到合适的位置
"""
import random
li = list(range(100))
random.shuffle(li)
print("before sort", li)
def insert_sort(li):
for i in range(1, len(li)): # 认为li 第一个元素开始为有序(即扑克牌手里的牌),第二个开始认为是无序的开始遍历(即每次从后面重新起一张牌)
temp_value = li[i] # 把新起的牌保存下来
j = i - 1 # 找到有序牌的尾部
while j >= 0 and li[j] > temp_value: # 从尾部往前倒着找,找到合适位置
li[j + 1] = li[j] # 只要比起的牌大,就往后移动一格,并且把j当前位置给空出来,先把值移动
j -= 1 # 由于要继续向前比较,多以j往前走,此时j+1的位置是空置
li[j + 1] = temp_value # 将当前起的牌插入的空的位置
insert_sort(li)
print("after sort", li)