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)。插入排序对于小数据集或基本有序的数据集来说效率很高,但对于大数据集,效率较低。

相关推荐
浅念-9 分钟前
C++ :类和对象(4)
c语言·开发语言·c++·经验分享·笔记·学习·算法
YunchengLi10 分钟前
【移动机器人运动规划】5 基于优化的轨迹规划 Part2
算法·机器人
Dxy123931021624 分钟前
Python检查JSON格式错误的多种方法
前端·python·json
yuuki23323328 分钟前
【C++】模拟实现 AVL树
java·c++·算法
dog2501 小时前
阿基米德的有限步逼近思想求圆面积
算法
Lightning-py1 小时前
ASCII,十进制,十六进制,八进制和二进制转换表
python
想做功的洛伦兹力11 小时前
2026/2/13日打卡
算法
仟濹1 小时前
【算法打卡day7(2026-02-12 周四)算法:BFS and BFS】 3_卡码网107_寻找存在的路线_并查集
数据结构·算法·图论·宽度优先
YuTaoShao1 小时前
【LeetCode 每日一题】3713. 最长的平衡子串 I ——(解法二)暴力枚举 + 优化
算法·leetcode·职场和发展
蜡笔小马1 小时前
20.Boost.Geometry 中常用空间算法详解:crosses、densify、difference 与离散距离度量
c++·算法·boost