9种排序算法---插入排序算法

        插入排序是将数列中的元素逐一与排序好的数据进行比较,并找到合适的位置插入,插入排序也有两种形式,递增数列递减数列

def insert(data):
    for i in range(5):
        temp = data[i]
        j = i-1
        while j >= 0 and temp < data[j]:
            data[j+1] = data[j]
            j -= 1
        data[j+1] = temp
    return data
text = insert([2,45,26,43,89])
print(text) # [2, 26, 43, 45, 89]

 步骤解析

        (1)有这样一组数列,现在我们对其进行递增排序

        (2)用第一个位置的数据占位,放在新数列的第一个位置 

        (3)取原数列第二个位置上的数45与2进行比较,因为45>2,所以将其插入到新数列的第二位#[2, 45]

        (4)取原数列第三个位置上的数26与45和2进行比较,因为2>26>45,所以将其插入到45前面的位置,将45向后移一位  #[2, 26, 45]

        (5)取原数列第三个位置上的数43与26,45和2进行比较,2>26>43>45,所以将其插入到45前面的位置,将45向后移一位  #[2, 26, 43, 45]

        (6)取原数列第三个位置上的数89与43,26,45和2进行比较,2>26>43>45>89,所以将其插入到45后面  #[2, 26, 43, 45, 89]

        (7)5个数全部排完,返回结果

用途

插入排序适用于小规模数据的排序,或者部分已经排序好的数据。它的时间复杂度为O(n^2),但在某些情况下,它的性能优于其他O(n^2)算法,如冒泡排序。

注意事项

  1. 稳定性:插入排序是稳定的排序算法,即相等的元素在排序后保持原来的顺序。
  2. 空间复杂度:插入排序的空间复杂度为O(1),因为它只需要一个额外的存储空间(临时变量)。
  3. 适用场景:对于小规模数据或部分有序的数据,插入排序是一个不错的选择。

      

平均时间复杂度最坏时间复杂度空间复杂度
插入排序算法O(n2)O(n2)O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值