python实现基本算法之插入排序(Insertion Sort)

基本算法之插入排序(Insertion Sort)

基本算法—02、插入排序(Insertion Sort)算法
冒泡排序已经发布,大家快去看看啊!
后面几天会把选择排序,归并排序,快速排序等等都发布的!欢迎大家批评指正!



0、前言

评判一个算法的好坏的标准:

  • 时间复杂度
  • 空间复杂度

1、插入排序算法是什么?

有一个已经有序的数据序列,要求这个已经排好的数据序列中插入一个数,但是要求插入之后数据序列依旧有序,这时候就要用到一种排序方法------插入排序法(insertion Sort)。
插入排序的基本操作就是把数据插入到排序好的数据数列中,从而得到一个新的,个数加一的有序数列,适合少量数据的排序。是一种稳定的排序算法

2、算法过程图解

在这里插入图片描述

3、代码实现

代码如下(示例01):

"""
Insertion Sort 插入排序
时间复杂度:O(N^2)
"""


def insertion_sort(alist):
    for i in range(1,len(alist)):
        # 循环子序列的时候,就要反着来!
        for j in range(i,0,-1):
            # 如果后面一个数,大于前面的一个数,就交换位置
            if alist[j]<alist[j-1]:
                alist[j],alist[j-1]=alist[j-1],alist[j]


if __name__ == '__main__':
    alist = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(f'原列表的顺序:{alist}')
    insertion_sort(alist)
    print(f'选择排序之后的列表的顺序:{alist}')

注意一哈,比较的时候,取数据的是是倒着取出的!


4、评判算法

  • 最坏时间复杂度:O(N^2)
  • 最好时间复杂度:O(n)
  • 平均时间复杂度:O(N^2)
  • 空间复杂度:O(1)
  • 算法稳定性:稳定的排序
  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值