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

相关推荐
fly-iot6 小时前
TradingAgents 是一个模拟真实交易公司运作模式的多智能体交易框架,本地运行命令行工具,演示执行命令行模式,使用docker镜像打包
python·股票系统·tradingagents
2401_865439636 小时前
CSS如何实现图片自动裁剪填充_巧用object-fit属性控制尺寸
jvm·数据库·python
無限進步D6 小时前
Java 基础算法训练
java·开发语言·算法·入门
m0_748839496 小时前
HTML函数能否用液态金属散热提升性能_极端散热方案实测【汇总】
jvm·数据库·python
2301_803538956 小时前
mysql添加索引导致插入变慢怎么办_索引优化与异步处理方案
jvm·数据库·python
该醒醒了~6 小时前
深度学习异常检测Anomalib算法训练+推理+转化+onnx
人工智能·python·深度学习
2301_782659186 小时前
如何防止SQL脏数据写入_利用触发器实现强一致性校验
jvm·数据库·python
2301_817672266 小时前
如何实现元素从底部进入视口时触发 sticky 定位
jvm·数据库·python
日光明媚7 小时前
FFmpeg 视频生成推理 Pipeline:Python 版常用函数封装(可直接集成)
python·深度学习·ai作画·aigc·音视频
小毛驴8507 小时前
多线程同步打标记的几种实现方案
java·开发语言·python