插入排序:Python实现(低级排序法)

插入排序:Python实现(低级排序法)

维基百科:
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
复杂度:
最坏时间复杂度:O(n^2)
最优时间复杂度:O(n)
平均时间复杂度:O(n^2)
概述
插入排序和打牌类似:初始时手里(有序区)只有一张牌,每次(从无序区)摸一张牌,插入到手里已有的正确位置
e.g.
li = [6,5,3,1,8,7,2,4]
原本你手里有一张牌6,然后你去抓牌5,把抓的牌5与牌6 比较交换,然后继续抓,然后再把抓的牌与之前拥有的牌比较交换……
看图看图^^
在这里插入图片描述
不啰嗦,上代码

def insert_sort(li):
    for i in range(1,len(li)):
        tmp = li[i]#定义一个tmp为你抓的牌
        j = i-1#j是你手中的牌的最大索引
        while j >= 0 and li[j] > tmp:#让你抓的牌和你手中的牌比较(从你手中的牌最大索引开始比较),
            li[j],li[j+1] = li[j+1],li[j]#抓的牌和手中的牌交换
            j-=1#依次与你手中已经拥有的牌进行比较
    return li
li = []
s = input('请输入您要排序的数据(数字之间用,分隔开):')
l = s.split(",")
for i in l:
    j = int(i)
    li.append(j)
print(f'您要排序的列表是{li}')
new_li = insert_sort(li)
print(f'插入排序完成后的列表是{new_li}')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值