Python 插入排序:原理、使用场景与实现方法

简介: 本文主要介绍了Python 插入排序:原理、使用场景与实现方法

引言

插入排序(Insertion Sort)是一种简单直观且易于理解的排序算法,其工作原理类似于我们手动整理扑克牌的过程。通过构建一个有序序列,每次从未排序部分中取出一个元素并将其插入到已排序序列的正确位置,直到整个序列有序。尽管在处理大规模数据时效率较低,但对于小规模数据或部分有序的数据集,插入排序表现出了较好的性能。

insertionSort.gif

一、插入排序原理

  1. 构建初始有序序列:首先将数组的第一个元素视为已排序序列。
  2. 逐个插入:从第二个元素开始,依次与已排序序列中的元素进行比较,找到合适的插入位置,并将其插入。
  3. 重复上述过程:继续对剩余未排序元素执行相同的操作,直至所有元素都已排序到位。

二、插入排序步骤详解

假设有一个无序数组[5, 3, 8, 6, 7, 2],按照插入排序的过程:

  1. 第一轮:

    • 数组的第一个元素默认为已排序部分,即[5]
    • 将第二个元素35进行比较,发现3小于5,所以将3插入到5之前,得到[3, 5]
  2. 第二轮:

    • 已排序部分为[3, 5]
    • 将第三个元素8与已排序部分的元素依次比较,无需移动,得到[3, 5, 8]
  3. 继续这个过程,直到所有元素都已排序。

三、插入排序代码实现

以下是一个简单的插入排序实现:

def insertion_sort(arr):
    n = len(arr)

    # 遍历数组中的每个元素
    for i in range(1, n):
        current = arr[i]
        j = i - 1

        # 将当前元素与其左侧的已排序元素进行比较和交换
        while j >= 0 and arr[j] > current:
            arr[j + 1] = arr[j]
            j -= 1

        arr[j + 1] = current

    return arr

四、插入排序的使用场景

  • 小规模数据集:对于数据量较小的情况,插入排序可以快速完成排序任务,尤其是当数据近乎有序时,其时间复杂度接近O(n)。
  • 在部分场景下的优化:例如,当待排序数据基本有序时,插入排序能有效减少元素之间的比较次数,从而提高排序效率。

插入排序的时间复杂度达到O(n²),因此插入排序也并非首选方案。

目录
相关文章
|
8天前
|
Python
python简单分割文件的方法(python经典案例)
这篇文章介绍了两种使用Python进行文件分割的方法:通过读取指定字节数分割大文件成小文件,以及通过行数将文本文件分割成多个小文件。
26 1
|
6天前
|
移动开发 Python Windows
python编程获取网页标题title的几种方法及效果对比(源代码)
python编程获取网页标题title的几种方法及效果对比(源代码)
|
6天前
|
Python
python方法,传参20220101 计算与当前时间差
python方法,传参20220101 计算与当前时间差
|
7天前
|
缓存 开发者 Python
Python指定行号读取文件的方法
这种方法的优势在于它的效率和简便性,特别是当需要从同一文件中读取多行时。`linecache`会缓存文件,减少了重复读取的开销。
15 4
|
6天前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
9 1
|
7天前
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
11 3
|
6天前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
10 1
|
8天前
|
API 开发者 Python
Python中的魔法方法:从原理到实践
【9月更文挑战第24天】本文将深入探讨Python的魔法方法,这些特殊的方法允许对象定制其行为。文章首先揭示魔法方法的本质和重要性,然后通过代码示例展示如何利用它们来增强类的功能性。最后,我们将讨论在实际应用中应注意的事项,以确保正确和高效地使用这些方法。
|
8天前
|
Python
python 类中的内置方法
python 类中的内置方法
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
Python实现深度学习学习率指数衰减的方法与参数介绍
学习率指数衰减提供了一种高效的动态调整学习率的手段,帮助模型在不同训练阶段以不同的学习速度优化,有利于提升模型性能和训练效率。通过合理设置衰减策略中的参数,可以有效地控制学习率的衰减过程,实现更加精确的模型训练调优。
6 0
下一篇
无影云桌面