当前位置: 首页 > 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 是数组的长度。无论输入数据如何,时间复杂度都是 O(n²)。
  • 空间复杂度:O(1),只需要常数级的额外空间。

代码实现

方法:选择排序

def selection_sort(nums): n = len(nums) # 外循环,控制排序轮数 for i in range(n): # 假设当前位置的元素是最小值 min_idx = i # 内循环,在未排序部分寻找最小值 for j in range(i + 1, n): # 如果找到更小的元素,更新最小值的索引 if nums[j] < nums[min_idx]: min_idx = j # 将找到的最小值与当前位置的元素交换 nums[i], nums[min_idx] = nums[min_idx], nums[i] return nums # 测试 nums1 = [5,2,3,1] print(selection_sort(nums1)) # 输出:[1,2,3,5] nums2 = [5,1,1,2,0,0] print(selection_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/659577/

相关文章:

  • StructBERT模型压力测试与性能调优指南
  • 队列进行迷宫求解
  • 静态资源缓存策略与 Cache-Control 指令深度指南
  • 零代码!用Nano-Banana产品拆解引擎为技术文档自动配图
  • **发散创新:基于Go语言的协同计算框架设计与实践**在现代分布式系统中,**协同计算(Coll
  • Zotero文献格式化插件:让杂乱文献库变得井井有条的智能管家
  • Z-Image-Turbo-辉夜巫女入门指南:专为辉夜主题设计的轻量级文生图LoRA模型解析
  • FreeCAD绘图尺寸标注插件深度解析:从工程图到专业图纸的终极指南
  • Unity3D粒子系统进阶:从属性解析到动态烟雾特效实战
  • 74LS138芯片的5种典型应用场景,Multisim仿真带你玩转数字电路设计
  • Less如何实现CSS响应式导航栏_利用嵌套与媒体查询实现
  • Lychee Rerank MM惊艳效果:手写体图片Query匹配印刷体政策文档高分案例
  • 我的移动代码实验室:C4droid + GCC插件实战入门,从安装到写出第一个图形程序
  • Qsign签名服务:企业级QQ机器人开发签名验证解决方案与架构深度解析
  • iPaaS平台如何助力企业?2026年最新平台创新应用盘点
  • gte-base-zh能力展示:一键为百条短文本生成向量,效果直观可见
  • 2026年,探寻专业AI培训公司的独特魅力与价值
  • 6 文件保存功能优化
  • Phi-4-mini-reasoning企业审计合规:推理日志留存与敏感信息过滤方案
  • SQL更新日期格式不统一_利用DATE_FORMAT函数批量修正
  • Pixel Couplet Gen应用场景:线下展会扫码生成专属像素春联互动装置
  • Open Claw AI 零代码构建企业 HTML5 网站实战指南:30分钟从部署到上线
  • 精读双模态视频融合论文系列十一|湖南大学原创 UAVD-Mamba 封神!可变形 Token+Mamba 跨模态融合碾压 !
  • 除了场景切换,Unity的淡入淡出还能这么玩?创意应用与性能优化小贴士
  • 【2026奇点智能技术大会权威解码】:AI测试代码生成的5大颠覆性突破与落地陷阱预警
  • 解读核心Maintainer观点|Presto 不只是版本升级!从查询引擎到湖仓执行层,AI Infra 新方向
  • S2-Pro命令行工具开发:使用Node.js构建模型管理CLI
  • C/C++程序员必看:别再手动转换进制了!用cout和printf轻松搞定二进制/八进制/十六进制输出
  • Python黑客攻防(十)后门程序的隐蔽通信与反检测
  • 大模型推理流式响应卡顿诊断指南(2024实时通信性能黄金阈值清单)