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

相关推荐
不吃橘子的橘猫1 分钟前
《集成电路设计》复习资料2(设计基础与方法)
学习·算法·fpga开发·集成电路·仿真·半导体
yao124973647312 分钟前
【无标题】
python·synergy·deskflow·键鼠共享·hyprland·niri
halen33314 分钟前
How Masters Tool Fixed My Digital Disaster
算法·均值算法·推荐算法
workflower32 分钟前
原子需求的属性
python·测试用例·需求分析·软件需求
重生之后端学习43 分钟前
78. 子集
java·数据结构·算法·职场和发展·深度优先
Jasmine_llq1 小时前
<P5464 缩小社交圈>
排序算法·预处理·前缀和与差分·动态规划(区间 dp)·快速读入·模运算处理·区间查询与更新
摸鱼仙人~1 小时前
0-1背包与完全背包:遍历顺序背后的秘密
人工智能·算法
尘缘浮梦1 小时前
协程asyncio入门案例 2
开发语言·python
juleskk1 小时前
2.15 复试训练
开发语言·c++·算法
kronos.荒1 小时前
滑动窗口+哈希表:最小覆盖子串
数据结构·python·散列表