当前位置: 首页 > 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://www.lryc.cn/news/547164.html

相关文章:

  • 2安卓开发的主要语言
  • Python练习(握手问题,进制转换,日期问题,位运算,求和)
  • vtk 3D坐标标尺应用 3D 刻度尺
  • 蓝桥杯每日一题:第一周周四哞叫时间
  • DeepSeek本地接口调用(Ollama)
  • 自由学习记录(41)
  • 【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​
  • 大模型如何协助知识图谱进行实体关系之间的分析
  • 推荐几款优秀的PDF转电子画册的软件
  • 【大模型技术】LlamaFactory 的原理解析与应用
  • Golang依赖注入实战:从容器管理到应用实践
  • Node.js二:第一个Node.js应用
  • 【Python爬虫】利用代理IP爬取跨境电商AI选品分析
  • 生命周期总结(uni-app、vue2、vue3生命周期讲解)
  • 计算机数据库三级刷题总结(博主89分已过,总结的内容分享)
  • mfc140u.dll是什么?当程序遭遇mfc140u.dll问题:快速恢复正常的秘诀
  • AI是否能真正理解人类情感?从语音助手到情感机器人
  • 3.3.2 Proteus第一个仿真图
  • JetBrains学生申请
  • 深入探索WebGL:解锁网页3D图形的无限可能
  • SQL进阶技巧:上课时长计算
  • “沂路畅通”便利服务平台:赋能同城物流,构建高效畅通的货运生态
  • 文件上传靶场(1--9关)
  • 嵌入式 ARM Linux 系统构成(1):Bootloader层
  • ArcGIS Pro 基于基站数据生成基站扇区地图
  • GaussianCity:实时生成城市级数字孪生基底的技术突破
  • 【个人学习总结】反悔贪心:反悔堆+反悔自动机
  • 通往 AI 之路:Python 机器学习入门-线性代数
  • 迷你世界脚本UI五子棋小游戏
  • 阿里万相,正式开源