排序算法(3):插入排序

问题

排序 30, 24, 5, 58, 18, 36, 12, 42, 39

插入排序

插入排序将序列分为已排序和未排序两部分,每次从未排序部分取出第一个元素,插入到已排序部分的适当位置。重复此过程直到所有元素排序完成。

图解

  1. 初始化第一个元素为已排序部分,从未排序部分取第一个元素,插入到已排序部分的适当位置,主要是通过将大于待排序元素的位置后移
  2. 重复上述过程直到所有元素完成排序

代码

py 复制代码
def insertion_sort(nums):
    n = len(nums)
    for i in range(1, n):
        key = nums[i]
        j = i - 1

        while j >= 0 and key < nums[j]:
            nums[j + 1] = nums[j]	# 将大于目标值的元素后移
            j -= 1

        nums[j + 1] = key
    return nums

时间复杂度

插入排序的时间复杂度为 O(n2)

相关推荐
lvwangshu9 分钟前
图论:LCA、树的直径、树的重心、二分图与 Tarjan 缩点
算法·图论
302wanger1 小时前
干与湿:AI 拿走脑力之后,人剩下什么
算法
计算机编程-吉哥2 小时前
脑肿瘤MRI智能识别系统:基于深度学习的像素级脑肿瘤语义分割平台【计算机毕业设计选题推荐】
人工智能·python·深度学习·算法·毕业设计·课程设计·大数据毕业设计选题推荐
用户204937554952 小时前
端侧语音部署踩坑:模型能跑不等于终端真的能用
后端·算法
shehuiyuelaiyuehao2 小时前
算法39,位运算,消失的两个数字
java·数据结构·算法
ZiLing2 小时前
2026 ROS 2 Lyrical 踩坑实录(一):编译与依赖——rosdep、现代 CMake 与 CMake 4.x
算法
Murphy_lx2 小时前
1124. 表现良好的最长时间段
c++·算法
aramae3 小时前
模拟实现strstr函数(C语言)
c语言·开发语言·算法
liliangcsdn3 小时前
因子权重矩阵处理-滞回缓冲带+降频稳定化动态重选
开发语言·python·算法
敲代码的嘎仔3 小时前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展