当前位置: 首页 > 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已经改变了位置

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

 

知识回顾:

 

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

 

相关文章:

  • idea maven打包很慢,怎么提速-多线程
  • 中级统计师-经济学基础知识-第二章 企业生产理论
  • ES6+核心特性
  • 电商运营公司排名
  • 挑战杯应用赛道
  • xss注入遇到转义,html编码绕过了解一哈
  • 基于 SpaCy DependencyMatcher 编写复杂依存关系规则实战指南
  • 【浅谈】Agent 的存在具有什么意义
  • java集合(九) ---- Stack 类
  • 基于飞凌嵌入式i.MX9352嵌入式开发板M核的FreeRTOS设计例程
  • 算法题(168):逆序对
  • 牛客小白月赛118
  • DMC-E 系列总线控制卡----雷赛板卡介绍(六)
  • XPath 注入与修复
  • 前端面经整理【2】
  • 12V,24V降5V,12V,输出大电流15A电源解决方案的理想选择WD5030A
  • 《单光子成像》第三章 预习2025.6.13
  • 二叉树的算法
  • Python 基础语法
  • 题目类型——左右逢源
  • 视频网站广告代码/市场推广方案怎么做
  • wordpress会员设置/连云港seo优化
  • 专业做制作网站/武汉网络广告推广服务
  • 做网站需要买服务器/广告投放网站
  • 网站上如何放入地图/搜索网排名
  • 关于文案的网站/google框架一键安装