图示经典算法--插入排序

插入排序

插入排序基本思路,将待排序数据插入已经排序的数据的适当位置

def insertion_sort(data):
    n = len(data)
    # 外循环
    for i in range(1, n):
        j = i
        # 对索引i左侧数据排序,保证索引i左侧数据是有序的
        while j > 0 and data[j] < data[j - 1]:
            data[j], data[j - 1] = data[j - 1], data[j]
            j -= 1
  • 查看交换步骤
    这里写图片描述
  • 查看比较和交换步骤
    insertion_sort_tiny.gif

时间复杂度

对应长度为N数组

  • 倒序的情况,需要(N-1)+(N-2)+…+2+1=N*(N-1)/2次比较和(N-1)+(N-2)+…+2+1=N*(N-1)/2次交换
  • 有序的情况,需要(N-1)次比较和0次交换

时间复杂度为O(n^2)

示例代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值