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

8.4.1简单选择排序

知识总览:

简单选择排序:

从还没排序的元素的位置从左到右一趟趟找,每次都找值最小的,然后和当前待排的第一个元素交换位置,直到剩下最后一个元素,每排序一个元素下一趟就不再找该元素了,从下一个元素开始排序

第一趟从左往右扫描找到值最小的元素13,把13和最前边位置的元素49交换如图2,

在第2趟排序中,找除了第一个已经排序好的元素外,从剩下待排元素中从左到右找到选择值最小的元素27和第2个元素38的位置交换

在第3趟排序,上同,找除了前2个剩余没排序的元素,从左到右找到值最小的38和第3个元素位置65交换

在第4趟排序,上同,找除了前3个剩余没排序的元素,从左到右找到值最小的49和第4个元素位置97交换,因为有2个49,但是优先选择先找到的49和97交换

在第5趟排序,上同,找除了前4个剩余没排序的元素,从左到右找到值最小的另一个49和第5个元素位置76交换

在第6趟排序,上同,找除了前5个剩余没排序的元素,从左到右找到值最小的65和第6个元素位置97交换

在第7趟排序,上同,找除了前6个剩余没排序的元素,从左到右找到值最小的76和第7个元素位置97交换,

最后一趟只剩下一个待排元素,肯定是最大的元素,不需要再处理了,至此结束

因此,n个元素,最后一个元素不用处理,则只需n-1趟处理

 

代码实现:

n个元素,要进行n-1趟排序,i从0开始,则要i< n-1进行n-1趟循环,用min变量记录最小元素位置,双层for循环,第一层记录本趟排序从i位置开始,第2层记录本趟循环最小元素位置,第2层for循环遍历完后如果min元素和开始排序的元素不相等,则交换开始排序i位置的元素和最小元素位置

 

算法性能分析:

空间复杂度:O(1),只需记录几个IBA能量就可以让排序顺序执行

时间复杂度:跟有序、无序、逆序没关系,不管什么顺序都要进行n-1趟排序,每进行一趟排序都要两两关键字对比,第一趟n个元素需要比较n-1次,第二趟n-1个元素待排需要比较n-2次,依次类推,直到排序结束,需要比较的关键字次数总和为n(n-1)/2即时间复杂度为O(n²)

元素交换次数<n-1次(为啥是小于,不是等于吗。。。)

算法不稳定:如下,第一趟选值最小的1和第一个元素交换,不带下划线的2跑到了带下划线2的后边,第2趟比较俩2相等不交换位置,则排序之后俩值相同的元素2已经改变了位置

简单选择排序即可适用于顺序表,又可适用于链表(适用于链表的话听说每遍历一次把元素值最小的放在链头或链尾)

 

知识回顾:

 

又水一篇。。。。。。。。。 

 

http://www.xdnf.cn/news/1026019.html

相关文章:

  • jupyter内核崩溃
  • Unity 接入抖音小游戏二
  • PHP商城源码:构建高效电商平台的利器
  • fastmcp 实现mcp 服务端、客服端案例
  • java集合篇(六) ---- ListIterator 接口
  • 成功案例丨Altair 数字孪生技术助力GEZE打造智能建筑新标杆
  • 我自己动手写了一个MySQL自动化备份脚本,基于docker
  • linux下安装所有用户能共享的anaconda
  • 新型智慧城市综合运行管理平台(城市大脑)解决方案PPT(97页)
  • PHP设计模式实战:微服务架构与事件驱动系统
  • 高性能服务器程序框架知识梳理
  • if的简化书写,提高执行效率
  • STM32外设学习之USB
  • 手搓一个记录复制记录的软件,方便快速找到之前复制内容
  • grubby命令详解
  • Spring Boot的Security安全控制——认识SpringSecurity!
  • LangChain--(2)
  • 【测试开发】函数进阶-纯函数、内置函数、匿名函数、偏函数
  • 梨泛转录组-文献精读145
  • 基于sample_aiisp再创建一路 h264编码流,和jpg的编码流
  • BugKu Web渗透之秋名山车神
  • 高效解决Java内存泄漏问题:方法论与实践指南
  • 解决Avantage 6.0版本以上峰拟合 峰显示不全的问题
  • 2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
  • windows 电脑如何寻找 自己电脑上的 mac 地址
  • Linux cgroup 技术
  • 语法疫苗:SynCode如何为LLM生成装上“防崩溃引擎”
  • 学习笔记:Redis入门
  • 数学中 “熵“ 的奇妙世界
  • 【深入剖析】攻克 Java 并发的基石:Java 内存模型 (JMM) 原理与实践指南