排序算法之插入排序

**插入排序是一种简单且易于理解的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。**插入排序在实现上通常采用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

相关推荐
吴长建先生重名了38 分钟前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳6901 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
贝壳6902 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
岑梓铭4 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
青少儿编程课堂4 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄4 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
I_belong_to_jesus15 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude1 天前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司1 天前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划