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²),因此插入排序也并非首选方案。

目录
相关文章
|
22天前
|
Python
探索Python中的魔法方法:打造你自己的自定义对象
【8月更文挑战第29天】在Python的世界里,魔法方法如同神秘的咒语,它们赋予了对象超常的能力。本文将带你一探究竟,学习如何通过魔法方法来定制你的对象行为,让你的代码更具魔力。
37 5
|
21天前
|
Python
python保存两位小数的几种方法,python2保留小数
python保存两位小数的几种方法,python2保留小数
54 2
|
4天前
|
机器学习/深度学习 数据采集 算法
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
有多种方法可以处理时间序列数据中的噪声。本文将介绍一种在我们的研究项目中表现良好的方法,特别适用于时间序列概况中数据点较少的情况。
16 1
数据稀缺条件下的时间序列微分:符号回归(Symbolic Regression)方法介绍与Python示例
|
5天前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
41 17
|
5天前
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
21 12
|
2天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
11天前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
|
22天前
|
数据安全/隐私保护 Python Windows
三种方法,Python轻松提取PDF中全部图片
三种方法,Python轻松提取PDF中全部图片
|
21天前
|
Python
|
21天前
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
12 1