直接插入排序python_Python实现经典算法--直接插入排序

本文介绍了直接插入排序的基本思想和Python实现,通过将序列分为有序和无序两部分,逐步将无序元素插入到有序序列中。该算法在最好情况下时间复杂度为O(n^2),空间复杂度为O(1),且具有稳定性。文中还提供了用户输入数字序列进行排序的示例。
摘要由CSDN通过智能技术生成

cae1b2416664702cd16ff18535206130.png

直接插入排序是插入排序的一种,核心思想就是将整个序列看成两部分,有序和无序,从第二个元素开始遍历,每次取出一个跟其左边那个元素比较,比左边邻居大说明不用动,比其小,就需要将该元素取出,然后遍历左半边有序序列部分,通过比较大小找出该插入的位置插之,观察代码可知,该算法的最好时间复杂度为O(n^2),空间复杂度为O(1),且是稳定性算法。该代码是我借鉴的github上别人写的,说实话,思路瞬间开阔了。

def directSort(a):
    if len(a) <= 1:
        return a
    for i in range(1,len(a)):
        while i > 0 and a[i] < a[i-1]:
            a[i],a[i-1] = a[i-1],a[i]
            i = i - 1

num = input("请输入数字序列,以逗号隔开:")
inputNum = num.split(',')
inputNum = [int(inputNum[i]) for i in range(len(inputNum))]

insertSort(inputNum,len(inputNum))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值