【唐老狮】排序——选择排序

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

【选择排序】


【基本原理】

依次比较

找出极值

最后交换

图片

 

每一轮从头或尾开始遍历,找出一个极值(最大或最小)。一轮完毕之后,将极值放到最前或者最后。


【关键逻辑】

循环n次

有几个数就比较多少轮

 

极值的索引

 

找出极值

记录索引

 

一轮结束

交换位置

放在头部或尾部

 


【标准实现】

 

排序结果

 


【逻辑分析】

为什么有

两层循环嵌套

第一层

决定排序轮数

第二层

用于找出每轮的极值


为什么是 j = i + 1

每一轮之前默认极值都是 i 

第一次比较用 i 的下一个比较

图片

 

从图中黄色的数字可见

每一轮会把极值放到头部

 

而 i 是从0~n的

每一轮都会把极值

放到 i 的位置


如何降序排列

 

升序(从小到大)

降序(从大到小)

具体是哪种排序

关键点就是条件表达式

如果是小于(<)

(从头到尾遍历时)

找出最小的往前放

结果就是升序排列

如果是大于(>)

(从头到尾遍历时)

找出最大的往前放

结果就是降序排列

 


【从哪开始找?找到放在哪?】

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

举例

从前往后找

找到放最后

 


【练习】

目前我已经实现了,从头往后找,把找到的极值放在 最前面 和 最后面 两种选择排序。如果你理解了选择排序,你可以自己实现从尾往前找,把找到的极值放在 最前面 和 最后面



 

【总结】
 

·基本原理·

依次比较

找出极值

最后交换

·套路写法·

两层循环

一层轮数

一层寻找

初始索引

记录极值

第二层循环外交换

·注意事项·

从头遍历

从尾遍历

放在头部

放在尾部

第二层循环外交换


关注唐老狮获取更多干货内容

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值