插入排序(insert_sort)

1.问题

        有一个有序数组,添加一个元素,使其仍然有序。

2.思路

        遍历数组,将待添加元素和数组中元素比较,找到应该插入的位置。

3.插入排序实现方法

        将数组中数据分为已排区间和未排区间,初始时,已排区间只有数组第一个元素,之后逐个取未排区间元素,在已排区间中找到合适位置并插入,直到未排区间为空。

4.示例

        使用插入排序对[5,3,4,2,6,1]进行排序。

 5.代码

def insert_sort(nums):
    n = len(nums)
    if n <= 1 :
        return nums
    # 遍历未排区间
    for i in range(1,n):
        # 设置预排值value
        value = nums[i]
        # i之前为已排区间
        j = i - 1
        # 预排和已排区间的数逐个对比,直到找到比自己小的数nums[j],那么nums[j+1]处就应该放value
        while j >= 0 and value < nums[j]:
            # 已排大于预排value,先进行移动操作
                nums[j+1] = nums[j]
                j -= 1
        # value插入空隙
        nums[j+1] = value
    return nums

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值