通义 插入排序(Insertion Sort)

插入排序(Insertion Sort)是一种简单直观、稳定的排序算法,适合少量数据或基本有序的序列。它的工作方式就像整理手里的扑克牌:每次从桌上拿一张牌,把它插到左手中已排好序的位置,直到所有牌都拿完。

算法步骤

  1. 把数组分为"已排序"和"未排序"两部分,初始时第一个元素视为已排序。
  2. 从未排序部分依次取出一个元素,从右向左与已排序部分的元素比较:
    • 如果已排序元素大于当前元素,就把它向右挪一位;
    • 直到找到第一个不大于当前元素的位置,把当前元素插入该空位。
  3. 重复步骤 2,直到未排序部分为空。

示例

原始数组:[6, 2, 5, 8, 7]

  • 第 1 轮:2 与 6 比较,2 < 6,把 6 右移,2 插到最前 → [2, 6, 5, 8, 7]
  • 第 2 轮:5 与 6 比较,5 < 6,把 6 右移;再与 2 比较,5 > 2,插入中间 → [2, 5, 6, 8, 7]
  • 第 3 轮:8 > 6,不动 → [2, 5, 6, 8, 7]
  • 第 4 轮:7 依次与 8、6 比较,7 < 8,8 右移;7 > 6,插入 → [2, 5, 6, 7, 8]
    排序完成。

特点

  • 时间复杂度:最好 O(n)(已基本有序),最坏 O(n²)(逆序),平均 O(n²)。
  • 空间复杂度:O(1)(原地排序)。
  • 稳定:相同元素的相对位置不会改变。
相关推荐
上进小菜猪16 小时前
基于 YOLOv8 的 100 类中药材智能识别实战 [目标检测完整源码]
后端
少林码僧17 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)17 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
码事漫谈18 小时前
AI 技能工程入门:从独立能力到协作生态
后端
码事漫谈18 小时前
构建高并发AI服务网关:C++与gRPC的工程实践
后端
Niuguangshuo18 小时前
EM算法详解:解密“鸡生蛋“的机器学习困局
算法·机器学习·概率论
a31582380618 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
一条大祥脚18 小时前
26.1.9 轮廓线dp 状压最短路 构造
数据结构·c++·算法
鲨莎分不晴18 小时前
反向传播的数学本质:链式法则与动态规划的完美共舞
算法·动态规划
sonadorje18 小时前
逻辑回归中的条件概率
算法·机器学习·逻辑回归