排序和搜索(六)——插入排序的python实现

本文通过一组具体数字演示了插入排序的基本过程。首先将数组中的第一个数视为已排序部分,然后逐个处理剩余元素,通过与已排序部分进行比较,确定每个元素的正确位置,并将其插入到适当位置。该算法的时间复杂度为O(n²),适用于小型数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【插入排序】有这么一组数25,46,89,75,32。

第一个数25先放在第一个位置,不管。

25    
再看第二个数46,与前面25比较,大,顺理成章放在第二个位置。

2546   
再看第三个数89,与邻近的前面的46比较,大,由于前面已经排好序,故推出比25也大,放在第三个位置

254689  

再看第4个数75,与邻近的前面的89比较,小,89后移。再往前比,与邻近的前面的46比较,大类推,放在46和89之间

25467589 
同理,最后形成 

2532467589
【分析】插入排序的时间复杂度为0(n2),移位的处理要比交换的处理少

【代码】

#插入排序

def insertSort(alist):
    for i in range(1,len(alist)):
        value=alist[i]
        position=i
        while position>0 and value<alist[position-1]:
            alist[position]=alist[position-1]
            position=position-1
        alist[position]=value
    return alist
print(insertSort([25,46,89,75,32]))
【结果】
[25, 32, 46, 75, 89]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值