Python插入排序

插入排序是一种简单的排序算法,它通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要移动元素以腾出空间。

以下是Python中实现插入排序的示例代码:

python 复制代码
def insertion_sort(arr):
    # 遍历数组中的所有元素,从第二个元素开始
    for i in range(1, len(arr)):
        key = arr[i]  # 当前要插入的元素
        j = i - 1
        # 将大于key的元素向后移动
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        # 将key插入到正确的位置
        arr[j + 1] = key

# 示例
arr = [12, 11, 13, 5, 6]
insertion_sort(arr)
print("排序后的数组:", arr)

插入排序的时间复杂度是O(n^2),其中n是数组的长度。在最好的情况下(输入数组已经是排序的),时间复杂度是O(n)。插入排序对于小数据集或基本有序的数据集来说效率很高,但对于大数据集,效率较低。

相关推荐
干啥啥不行,秃头第一名8 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
黑眼圈子15 分钟前
牛客刷题记录5
java·开发语言·学习·算法
罗湖老棍子17 分钟前
【例 2】A Simple Problem with Integers(信息学奥赛一本通- P1548)
数据结构·算法·线段树·区间修改 区间查询
abant221 分钟前
leetcode 148 排序链表 归并终极形态
算法·leetcode·链表
sin°θ_陈23 分钟前
前馈式3D Gaussian Splatting 研究地图(路线一):像素对齐高斯的起点——pixelSplat 与 latentSplat 在解决什么
python·深度学习·3d·aigc·webgl·3dgs·空间智能
yang_B62123 分钟前
光斑中心检测
人工智能·算法
苦瓜小生23 分钟前
【Leetcode Hot 100刷题路线】| 找工作速刷 | 第23题 - [49] - 字母异位词分组
算法·leetcode·职场和发展
Bert.Cai30 分钟前
Python标识符详解
开发语言·python
Allen_LVyingbo30 分钟前
自进化医疗智能体:动态记忆与持续运行的Python架构编程(上)
数据结构·python·架构·动态规划·健康医疗