- 首先 第一个元素 是默认排序好的
- 然后找到下一个元素(这里暂时叫他x) 和排序好的元素 从后向前一一比较
- 参与比较的元素 如果比x大:那么向后移动一位,直到找到比x小的元素,那么这个比x小的元素的下一个位置 就是x要插入的位置
- 或者 全部比较完 都没有比x小的元素 那么x就是最小的插入到最前面
代码展示
def insertioSort(list01):
# 获取列表的长度
length = len(list01)
# 遍历 索引 1-9 第0个 默认有序
for i in range(1,length):
# 当前数的前一个下标
preIndex =i - 1
# 当前数
current =list01[i]
# 满足条件: 当前数的前一个下标 (到0就到头了) and 当前数的前一个数比 当前数大
while preIndex >= 0 and list01[preIndex] >current:
# 那么 把前面的数 向后移一位
list01[preIndex + 1] = list01[preIndex]
# 循环继续
preIndex -= 1
# 不满足条件时:
list01[preIndex + 1 ] =current
if __name__ == '__main__':
lista = []
for i in range(10):
lista.append(random.random())
insertioSort(lista)
print(lista)
代码不好理解的话 , 可以画个图,照着代码流程演示一两次 就懂了