插入排序

🎉摘要:Python 是一门解释型、面向对象、动态类型的高级编程语言,由荷兰程序员 Guido van Rossum 于 1991 年发布,核心设计理念是优雅、明确、简单。

插入排序是一种简单直观的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。这种算法类似于我们在打扑克牌时整理手中牌的过程,每次将一张牌插入到其他已经排好的牌中的适当位置。

其核心思想是把数组分成两部分:

  • 已排序部分(左边,初始只有第一个元素)

  • 未排序部分(右边,剩下所有元素)

然后逐个取出未排序部分的元素,把它插入到已排序部分的正确位置,直到整个数组有序。


以数组 [5, 2, 4, 6, 1, 3] 为例,一步步看:

初始:已排序 = [5],未排序 = [2,4,6,1,3]

取 2 → 插入到 5 前面 → 已排序 = [2,5]

取 4 → 插入到 2 和 5 之间 → 已排序 = [2,4,5]

取 6 → 放在最后 → 已排序 = [2,4,5,6]

取 1 → 插入到最前面 → 已排序 = [1,2,4,5,6]

取 3 → 插入到 2 和 4 之间 → 最终有序数组 [1,2,3,4,5,6]


示例代码:

def insertion_sort(arr):
    # 从第 2 个元素开始遍历(索引 1)
    for i in range(1, len(arr)):
        # 当前要插入的元素
        current = arr[i]
        # 已排序部分的最后一个元素索引
        j = i - 1

        # 向前遍历已排序部分,找到插入位置
        # 如果当前元素比前面的元素小,就把前面的元素往后挪
        while j >= 0 and current < arr[j]:
            arr[j + 1] = arr[j]  # 元素后移
            j -= 1

        # 退出循环时,j+1 就是正确的插入位置
        arr[j + 1] = current

    return arr

if __name__ == "__main__":
    test_list = [5, 2, 4, 6, 1, 3]
    print("原始数组:", test_list)
    sorted_list = insertion_sort(test_list)
    print("排序后:", sorted_list)

运行结果:

原始数组: [5, 2, 4, 6, 1, 3]
排序后: [1, 2, 3, 4, 5, 6]

  










说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号