插入排序

1.插入排序

插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部的牌

–来自百度百科

把一个数组分为两个部分,排序部分,未部分排序。从位排序部分抽取一个值赋值给KEY(位排序部分减一),与已排序部分最后一个值比较,换位;倒数第二个值比较,换位。。。直到换到合适的位置(已排序值加一)

代码实现

def insert_sort(lists):
    # 插入排序
    count = len(lists)
    for i in range(1, count):
        key = lists[i]   #数组的值依次赋值给key
        j = i - 1        #可以检索到有序部分最后一个值
        while j >= 0:
            if lists[j] > key:
                lists[j + 1] = lists[j]
                lists[j] = key
            j -= 1
    return lists

如数组 5364179
第一层循环,假定5是有序部分,3是无序部分抽出来的值
3和5比较,换位——>35 64179
第二层循环,假定35是有序部分,6是无序部分抽出来的值
6和5比较,不换位——>356 4179
5和3比较,不换位——>356 4179
第三层循环…3456 179
…13456 79
…134567 9
…1345679

最后,生成升序数组输出

(非作者允许,严禁转载)

作者联系方式:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值