排序算法 - 插入排序

  • 首先 第一个元素 是默认排序好的
  • 然后找到下一个元素(这里暂时叫他x) 和排序好的元素 从后向前一一比较
  • 参与比较的元素 如果比x大:那么向后移动一位,直到找到比x小的元素,那么这个比x小的元素的下一个位置 就是x要插入的位置
  • 或者 全部比较完 都没有比x小的元素 那么x就是最小的插入到最前面

代码展示


def insertioSort(list01):
    # 获取列表的长度
    length = len(list01)

    # 遍历 索引  1-9   第0个  默认有序
    for  i  in range(1,length):
        # 当前数的前一个下标
        preIndex =i - 1
        # 当前数
        current =list01[i]

        # 满足条件: 当前数的前一个下标 (到0就到头了)   and   当前数的前一个数比 当前数大
        while preIndex >= 0 and list01[preIndex] >current:
            # 那么 把前面的数 向后移一位
            list01[preIndex + 1] = list01[preIndex]

            # 循环继续
            preIndex -= 1
        # 不满足条件时:
        list01[preIndex + 1 ] =current




if __name__ == '__main__':
    lista = []

    for i  in range(10):
        lista.append(random.random())
    insertioSort(lista)
    print(lista)

代码不好理解的话 , 可以画个图,照着代码流程演示一两次 就懂了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值