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

相关推荐
LYFlied4 分钟前
【每日算法】LeetCode215. 数组中的第K个最大元素
前端·算法
炽烈小老头5 分钟前
【每天学习一点算法 2026/01/06】最小栈
学习·算法·leetcode
mit6.82411 分钟前
hadoop|贪心
算法
2501_9418053117 分钟前
在阿姆斯特丹智能港口场景中构建集装箱实时调度与高并发物流数据分析平台的工程设计实践经验分享
java·大数据·算法
涂山小楼22 分钟前
线程join()方法的深度理解
java·前端·算法
gihigo199830 分钟前
LDPC码硬判决译码算法的详细解析
网络·算法
Clarence Liu30 分钟前
快慢指针问题
后端·算法
Swift社区34 分钟前
LeetCode 467 环绕字符串中唯一的子字符串
算法·leetcode·职场和发展
Yzzz-F34 分钟前
P3870 [TJOI2009] 开关[线段树(区间加 区间和 变种)]
算法
wen__xvn39 分钟前
代码随想录算法训练营DAY7第三章 哈希表part02
数据结构·算法·散列表