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

LeetCode 插入排序 题解

LeetCode 插入排序 题解

题目描述

实现插入排序算法,对一个整数数组进行排序。

示例 1:

输入:nums = [5,2,3,1] 输出:[1,2,3,5]

示例 2:

输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]

解题思路

方法:插入排序

思路

  • 插入排序是一种简单的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
  • 插入排序的过程类似于我们玩扑克牌时,将每张牌插入到已排序的牌中的适当位置。

复杂度分析

  • 时间复杂度:O(n²),其中 n 是数组的长度。最坏情况下,需要进行 n(n-1)/2 次比较和移动。
  • 空间复杂度:O(1),只需要常数级的额外空间。

代码实现

方法:插入排序

def insertion_sort(nums): n = len(nums) # 外循环,从第二个元素开始遍历 for i in range(1, n): # 保存当前要插入的元素 key = nums[i] # 内循环,从已排序部分的末尾开始向前比较 j = i - 1 while j >= 0 and nums[j] > key: # 将大于key的元素向右移动 nums[j + 1] = nums[j] j -= 1 # 将key插入到适当的位置 nums[j + 1] = key return nums # 测试 nums1 = [5,2,3,1] print(insertion_sort(nums1)) # 输出:[1,2,3,5] nums2 = [5,1,1,2,0,0] print(insertion_sort(nums2)) # 输出:[0,0,1,1,2,5]

测试用例

测试用例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

测试用例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

总结

本题是排序算法的基础问题,主要考察对插入排序算法的理解和实现。插入排序是一种简单直观的排序算法,它通过将未排序元素插入到已排序部分的适当位置来完成排序。

插入排序的核心思想是:将数组分为已排序部分和未排序部分,每次从未排序部分取出一个元素,在已排序部分中从后向前扫描,找到相应位置并插入。

这种方法虽然时间复杂度较高,但对于小规模数据或基本有序的数据表现较好,并且是稳定的排序算法。掌握插入排序的原理,对于理解其他排序算法和算法设计思想非常重要。

http://www.jsqmd.com/news/659472/

相关文章:

  • Bidili Generator应用案例:社交媒体配图5分钟搞定,设计师效率神器
  • 千兆网络变压器选型避坑指南:从PoE到PHY匹配的全链路解析
  • Unity 2022 复刻《蔚蓝》手感:从零开始调校角色移动与跳跃的物理参数
  • 像素史诗·智识终端Android Studio开发:环境搭建与移动端AI应用原型
  • 2026年口碑好的北京门头沟区垃圾车/北京丰台区垃圾车/北京密云区垃圾车/北京顺义区垃圾车实力工厂推荐 - 行业平台推荐
  • Phi-4-mini-reasoning在后端开发中的妙用:API设计、文档生成与性能优化
  • Divide and Conquer - Writeup by AI
  • FireRedASR Pro实战:为在线教育平台添加语音作业批改功能
  • iOS应用反调试全面指南:方法、代码与破解技术
  • Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
  • Topit:让Mac窗口置顶变得简单高效,提升多任务处理体验
  • Qwen3.5-2B部署教程:WSL2+Docker Desktop+NVidia Container Toolkit全链路
  • 深度解析3D-TransUNet:Vision Transformer与U-Net融合的前沿医学分割技术
  • STM32H7的系统bootloader基础知识
  • 清音听真Qwen3-ASR-1.7B效果惊艳:粤语+英语混合演讲→自动语种切换+术语统一校准
  • 鸿蒙手写板点云识别库,支持识别字母和数字
  • Python入门到AI开发:基于浦语灵笔2.5-7B的实践路径
  • 【AI设计模式生成实战指南】:SITS2026首席架构师亲授3大可落地模式框架与5个工业级生成案例
  • Cesium弹窗避坑指南:解决Popup随相机移动闪烁、位置偏移的5个常见问题
  • “我写的提示词生成了代码”——这算原创吗?(中国首例AI提示词著作权案庭审纪要精要)
  • 导入SQL文件后前端仍显示旧数据怎么办_数据库查询缓存刷新
  • Agent 开发框架(二)CrewAI
  • GitHub Copilot X vs. Cursor Pro vs. Tabnine Ultra vs. 通义灵码2.0:2026奇点智能技术大会独家实测数据曝光(附IDE响应延迟毫秒级对比表)
  • RAG 不是做出来就结束了:怎么评估、为什么失败、适合哪些场景?
  • 为什么92%的生成式AI服务上线首日响应延迟超标?——深度拆解缓存预热缺失导致的Token流断点危机
  • Java 高并发场景下 Redis 分布式锁(UUID+Lua)最佳实践
  • 超级千问语音设计世界优化升级:使用Nginx反向代理提升访问安全
  • NoSQL之Redis配置与优化
  • 最新的Claude-opus-4-7在科研场景到底有多强...
  • Qwen3.5-9B零基础部署:5分钟本地跑通,笔记本也能玩转原生多模态