排序算法之插入排序

**插入排序是一种简单且易于理解的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。**插入排序在实现上通常采用in-place排序(即只需用到O(1)的额外空间的排序),因此在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

以下是插入排序的基本步骤:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤2~5。

插入排序的时间复杂度为O(n^2),其中n是需要排序的元素数量。在最坏的情况下,插入排序需要比较n*(n-1)/2次,因此它的时间复杂度是O(n^2)。然而,插入排序在处理小型数据集时可能表现得相对较快,因为它的实现相对简单。

以下是一个Python实现插入排序的例子:

复制代码
def insertion_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i-1 while j >=0 and key < arr[j] : arr[j+1] = arr[j] j -= 1 arr[j+1] = key return arr

这个函数接受一个列表作为参数,并返回一个已排序的列表。内部的循环用于遍历列表中的每个元素,并将其插入到已排序序列中的正确位置。在每次迭代中,我们维护一个"key"变量,它存储当前元素的值。我们从当前元素的左侧开始向前扫描已排序序列,如果找到一个元素大于"key",则将它向右移动一位,直到找到"key"的正确位置,然后将其插入。

插入排序在处理小规模数据时非常有效,但对于大规模数据集,它的性能可能会变得较差。因此,在实际应用中,通常会选择更高效的算法,如快速排序、归并排序或堆排序等。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!

扫码进群领资料https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

相关推荐
源代码•宸6 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
yongui478346 小时前
MATLAB的指纹识别系统实现
算法
高山上有一只小老虎6 小时前
翻之矩阵中的行
java·算法
jghhh017 小时前
RINEX文件进行卫星导航解算
算法
爱思德学术7 小时前
中国计算机学会(CCF)推荐学术会议-A(计算机科学理论):LICS 2026
算法·计算机理论·计算机逻辑
CVHub7 小时前
多模态图文训推一体化平台 X-AnyLabeling 3.0 版本正式发布!首次支持远程模型推理服务,并新增 Qwen3-VL 等多款主流模型及诸多功能特性,等
算法
hoiii1877 小时前
MATLAB实现Canny边缘检测算法
算法·计算机视觉·matlab
qq_430855887 小时前
线代第二章矩阵第四课:方阵的幂
算法·机器学习·矩阵
roman_日积跬步-终至千里8 小时前
【计算机设计与算法-习题2】动态规划应用:矩阵乘法与钢条切割问题
算法·矩阵·动态规划
kupeThinkPoem8 小时前
计算机算法导论第三版算法视频讲解
数据结构·算法