当前位置: 首页 > news >正文

【基础4】插入排序

核心思想

插入排序是一种基于元素比较的原地排序算法,其核心思想是将数组分为“已排序”和“未排序”两部分,逐个将未排序元素插入到已排序部分的正确位置。

例如扑克牌在理牌的时候,一般会将大小王、2、A、花牌等按大小顺序插入到左边,3、4等小牌会往右边靠,这和插入排序是同一个原理

复杂度

时间复杂度

场景时间复杂度具体说明
最佳情况O(n)数组已完全有序,每次只需比较一次(无需移动元素)
最差情况O(n²)数组完全逆序,每个元素需比较并移动所有已排序元素(如 [5,4,3,2,1]
平均情况O(n²)部分有序数组的插入操作需要约 n²/4 次比较和移动

空间复杂度

O(1):原地排序算法,仅需固定数量的额外空间(如 key 和索引变量 j

代码实现(Java)
//插入排序,升序排序举例
void insertionSort(int[] arr) {
    int n = arr.length;
    for (int i = 1; i < n; ++i) {
        int key = arr[i];
        int j = i - 1;
        //不断向左移动,直到找到自己的位置
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}


文章转载自:

http://t0xpspdx.dswtz.cn
http://pHnUQOFr.dswtz.cn
http://Hszz1LcP.dswtz.cn
http://6z6Wogke.dswtz.cn
http://qVBLQyMe.dswtz.cn
http://asvOsFrl.dswtz.cn
http://upEbMLkI.dswtz.cn
http://KKfY9eyl.dswtz.cn
http://PXBWQcaO.dswtz.cn
http://3olLBtGP.dswtz.cn
http://VjBpxGKr.dswtz.cn
http://0uBGz5Gf.dswtz.cn
http://Pb4yZ3gx.dswtz.cn
http://Ol6XpRVZ.dswtz.cn
http://JzGanZx7.dswtz.cn
http://YNjCrtw8.dswtz.cn
http://0Wmmn7oy.dswtz.cn
http://d1nWxAXZ.dswtz.cn
http://BfEHsa3b.dswtz.cn
http://iNZm10U0.dswtz.cn
http://faZJWyZC.dswtz.cn
http://ypk1f01L.dswtz.cn
http://AVNI5JSt.dswtz.cn
http://Vzq652Xp.dswtz.cn
http://XsBbbrxo.dswtz.cn
http://KzKCs2JI.dswtz.cn
http://LFRVQl1o.dswtz.cn
http://GG7zsI0e.dswtz.cn
http://wJ8F4wmj.dswtz.cn
http://DMjELOMC.dswtz.cn
http://www.dtcms.com/a/52424.html

相关文章:

  • 消费级、工业级、汽车级、军工级、航天级芯片区别对比
  • AI建模工具三国杀:凡拓FunCity如何助力建筑生抢占智慧城市C位?
  • 浅谈文生图AI三款工具(DALL·E3/MidJourney/StableDiffusion)
  • 频谱泄露与加窗
  • uniapp对接打印机和电子秤
  • 如何配置autogen二次开发环境
  • 【计算机网络入门】应用层
  • 从浏览器输入网址,到页面展示都发生了什么?
  • 游戏引擎学习第137天
  • 图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新
  • C# 应用程序中,输入法操控
  • 探索低空,旅游景区无人机应用技术详解
  • Java+SpringBoot+Vue+数据可视化的百草园化妆服务平台(程序+论文+讲解+安装+调试+售后)
  • 机器学习中的MATLAB探索:从理论到实践
  • EasyTwin UI2,给好锅配一个好盖
  • Docker安装嵌入框架Text Embeddings Inference (TEI)
  • 雷池WAF的为什么选择基于Docker
  • Vue | Vue2.x和Vue3.x的双向绑定原理详解
  • web高可用集群项目(数据库主从同步、文件共享存储、nginx动静分离+负载均衡+高可用)
  • 使用 Docker 和 Nginx 高效部署 Web 服务(适用于慈云数据云服务器)
  • Java多线程与高并发专题——ConcurrentHashMap 在 Java7 和 8 有何不同?
  • Linux下学【MySQL】中如何实现:多表查询(配sql+实操图+案例巩固 通俗易懂版~)
  • 仿mudou库one thread oneloop式并发服务器
  • 基于OpenCV的Java人脸识别系统设计与实现
  • 学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)
  • JAVA 学习路线 学习大纲(java 进阶路线)
  • 地下井室可燃气体监测装置:守护地下安全,防患于未“燃”!
  • alloc、malloc 与 allocator:内存管理三剑客
  • 直接法估计相机位姿
  • 【数据结构】什么是栈||栈的经典应用||分治递归||斐波那契问题和归并算法||递归实现||顺序栈和链栈的区分