当前位置: 首页 > 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;
    }
}

相关文章:

  • 消费级、工业级、汽车级、军工级、航天级芯片区别对比
  • 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 服务(适用于慈云数据云服务器)
  • 浙江义乌小商品批发网/seo是指什么职位
  • 网站建设评语/深圳将进一步优化防控措施
  • 导航网站头部代码/搜索引擎竞价广告
  • 网站的图片要会员才能下载怎么做/万能推广app
  • 网站开发代做/图片识别搜索引擎
  • wordpress无法连接到数据库/优化设计答案五年级下册