【选择排序】
【基本原理】
依次比较
找出极值
最后交换

每一轮从头或尾开始遍历,找出一个极值(最大或最小)。一轮完毕之后,将极值放到最前或者最后。
【关键逻辑】
循环n次
有几个数就比较多少轮

极值的索引

找出极值
记录索引

一轮结束
交换位置
放在头部或尾部

【标准实现】

排序结果

【逻辑分析】
为什么有
两层循环嵌套
第一层
![]()
决定排序轮数
第二层
![]()
用于找出每轮的极值
为什么是 j = i + 1

每一轮之前默认极值都是 i
第一次比较用 i 的下一个比较

从图中黄色的数字可见
每一轮会把极值放到头部

而 i 是从0~n的
每一轮都会把极值
放到 i 的位置
如何降序排列

升序(从小到大)
降序(从大到小)
具体是哪种排序
关键点就是条件表达式
如果是小于(<)
(从头到尾遍历时)
找出最小的往前放
结果就是升序排列
如果是大于(>)
(从头到尾遍历时)
找出最大的往前放
结果就是降序排列

【从哪开始找?找到放在哪?】
上面的选择排序,是从第一个开始,依次往后找极值,找到后放到最前面。选择排序没有固定的写法,你可以从前往后找,也可以从后往前找,找到后你可以放在最前面,也可以放在最后面。只要理解了基础逻辑,只需要简单改改逻辑便可实现。
举例
从前往后找
找到放最后

【练习】
目前我已经实现了,从头往后找,把找到的极值放在 最前面 和 最后面 两种选择排序。如果你理解了选择排序,你可以自己实现从尾往前找,把找到的极值放在 最前面 和 最后面。
【总结】
·基本原理·
依次比较
找出极值
最后交换
·套路写法·
两层循环
一层轮数
一层寻找
初始索引
记录极值
第二层循环外交换
·注意事项·
从头遍历
从尾遍历
放在头部
放在尾部
第二层循环外交换
关注唐老狮获取更多干货内容

选择排序:从头尾遍历与升降序应用
本文解析了选择排序的基本原理,包括其关键逻辑和标准实现过程,重点讲解了如何根据比较符号调整升序或降序,并演示了从头尾出发的不同遍历方式和极值交换策略。

被折叠的 条评论
为什么被折叠?



