常用排序算法:直接插入排序

本文详细介绍了插入排序算法的原理,通过类比打扑克的过程,解释了如何将新元素插入到已排序的部分,保持整个序列的有序状态。适用于小规模数据排序,时间复杂度为O(n^2),是一种稳定排序方法。

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

算法思路

插入排序就跟我们打扑克抽牌是一样的形式,每次新抽的牌插入到已有的有序牌中,是牌始终保持有序状态,例如[1,3, 2,4,0] 数组,先将1作为起始牌,下一张牌为3,第一趟完成后变成[1, 3]有序数组和[2,4,0]无序数组,接下来插入2,有序数组变成[1,2,3],无序数组变成[4,0],以此类推知道将所有的无序数组都插入完毕就能完成排序操作。

插入排序算法适用于少量数据的排序,时间复杂度为 O(n^2)。是一种稳定的排序方法。

代码实现

def insert_sort(nums):
    for i in range(1,len(nums)):  # 无序区[i:]
        temp = nums[i]  # 无序区的第一个数
        j = i - 1  # 有序区的最后一个
        while j >= 0 and nums[j] > temp:  # 执行插入操作
            nums[j+1] = nums[j] 
            j -= 1
        nums[j+1] = temp
        print(nums)


insert_sort([1,3, 2,4,0])

# [1, 3, 2, 4, 0]
# [1, 2, 3, 4, 0]
# [1, 2, 3, 4, 0]
# [0, 1, 2, 3, 4]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值