排序算法之插入排序

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

相关推荐
Jay Kay7 小时前
GVPO:Group Variance Policy Optimization
人工智能·算法·机器学习
Epiphany.5567 小时前
蓝桥杯备赛题目-----爆破
算法·职场和发展·蓝桥杯
YuTaoShao7 小时前
【LeetCode 每日一题】1653. 使字符串平衡的最少删除次数——(解法三)DP 空间优化
算法·leetcode·职场和发展
茉莉玫瑰花茶8 小时前
C++ 17 详细特性解析(5)
开发语言·c++·算法
cpp_25018 小时前
P10570 [JRKSJ R8] 网球
数据结构·c++·算法·题解
cpp_25018 小时前
P8377 [PFOI Round1] 暴龙的火锅
数据结构·c++·算法·题解·洛谷
uesowys8 小时前
Apache Spark算法开发指导-Factorization machines classifier
人工智能·算法
季明洵8 小时前
C语言实现单链表
c语言·开发语言·数据结构·算法·链表
shandianchengzi8 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
I_LPL8 小时前
day26 代码随想录算法训练营 回溯专题5
算法·回溯·hot100·求职面试·n皇后·解数独