插入排序
本页面将简要介绍插入排序。
定义
插入排序(英语:Insertion sort)是一种简单直观的排序算法。它的工作原理为将待排列元素划分为「已排序」和「未排序」两部分,每次从「未排序的」元素中选择一个插入到「已排序的」元素中的正确位置。
一个与插入排序相同的操作是打扑克牌时,从牌桌上抓一张牌,按牌面大小插到手牌后,再抓下一张牌。
性质
稳定性
插入排序是一种稳定的排序算法。
时间复杂度
插入排序的最优时间复杂度为
插入排序的最坏时间复杂度和平均时间复杂度都为
代码实现
伪代码
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 |
|
折半插入排序
插入排序还可以通过二分算法优化性能,在排序元素数量较多时优化的效果比较明显。
时间复杂度
折半插入排序与直接插入排序的基本思想是一致的,折半插入排序仅对插入排序时间复杂度中的常数进行了优化,所以优化后的时间复杂度仍然不变。
代码实现
1 2 3 4 5 6 7 8 9 10 |
|
本页面最近更新:2025/5/5 00:51:05,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:NachtgeistW, H-J-Granger, StudyingFather, countercurrent-time, Enter-tainer, Junyan721113, Konano, AngelKitty, CCXXXI, cjsoft, diauweb, Early0v0, ezoixx130, GekkaSaori, iamtwz, Ir1d, LovelyBuggies, Makkiy, mgt, minghu6, P-Y-Y, PotassiumWings, SamZhangQingChuan, sshwy, Suyun514, Tiphereth-A, weiyong1024, AprilNEA, clee01, EmptyDreams, GavinZhengOI, Gesrua, Great-designer, hsfzLZH1, ksyx, kxccc, lychees, mcendu, Menci, Molly166, ouuan, partychicken, Peanut-Tang, shawlleyw, SukkaW, thy233, TrickEye, Xeonacid
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用