排序算法之插入排序

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

相关推荐
じ☆冷颜〃4 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE34 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
楚来客4 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
Echo_NGC22375 小时前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
会员果汁5 小时前
leetcode-动态规划-买卖股票
算法·leetcode·动态规划
橘颂TA5 小时前
【剑斩OFFER】算法的暴力美学——二进制求和
算法·leetcode·哈希算法·散列表·结构与算法
地平线开发者7 小时前
征程 6 | cgroup sample
算法·自动驾驶
姓蔡小朋友7 小时前
算法-滑动窗口
算法