排序算法(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)

相关推荐
2401_83319773几秒前
嵌入式C++电源管理
开发语言·c++·算法
灰色小旋风4 分钟前
力扣22 括号生成(C++)
开发语言·数据结构·c++·算法·leetcode
寒月小酒5 分钟前
3.23 OJ
数据结构·c++·算法
2501_924952695 分钟前
模板编译期哈希计算
开发语言·c++·算法
2201_7586426412 分钟前
嵌入式C++开发注意事项
开发语言·c++·算法
AI科技星25 分钟前
基于v≡c第一性原理的大统一力方程:严格推导、全维度验证与四大基本相互作用的统一
人工智能·线性代数·算法·机器学习·平面
小杍随笔26 分钟前
【Rust 语言编程知识与应用:同步机制详解】
开发语言·算法·rust
sprite_雪碧28 分钟前
枚举 / 搜索类算法(机试核心考点)
算法
罗湖老棍子34 分钟前
简单题(信息学奥赛一本通- P1539)
数据结构·算法·树状数组·区间修改 单点查询
羊小猪~~41 分钟前
【论文精度】Transformer---大模型基石
人工智能·深度学习·考研·算法·机器学习·transformer