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

相关推荐
Chase_______3 分钟前
LeetCode 1493 & 3634 题解:滑动窗口双指针,从“删一个元素的全1子数组“到“最少移除使数组平衡“
算法·leetcode
悲伤小伞15 分钟前
LeetCode 热题 100_4-283. 移动零
算法·leetcode·职场和发展
_Evan_Yao19 分钟前
零基础学编程,第一门语言选Python还是C?
c语言·开发语言·python
星 海20 分钟前
网络芯片对IP地址最长前缀匹配算法的实现
网络·算法
OYangxf22 分钟前
力扣hot100【滑动窗口】
算法·leetcode·职场和发展
步步为营DotNet28 分钟前
深入探究.NET 11 中.NET Aspire 在云原生应用持续集成与交付安全加固
python
CQU_JIAKE31 分钟前
5.7【A】
算法
2zcode32 分钟前
基于SVM与HOG算法的行人检测系统设计与实现
算法·机器学习·支持向量机
MATLAB代码顾问37 分钟前
MATLAB实现粒子群算法优化PID参数
开发语言·算法·matlab
Soari40 分钟前
深度办公革命:拆解 Claude for Microsoft 365,打造金融级智能办公生态
python·microsoft·金融·flask