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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【选择排序】


【基本原理】

依次比较

找出极值

最后交换

图片

 

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


【关键逻辑】

循环n次

有几个数就比较多少轮

 

极值的索引

 

找出极值

记录索引

 

一轮结束

交换位置

放在头部或尾部

 


【标准实现】

 

排序结果

 


【逻辑分析】

为什么有

两层循环嵌套

第一层

决定排序轮数

第二层

用于找出每轮的极值


为什么是 j = i + 1

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

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

图片

 

从图中黄色的数字可见

每一轮会把极值放到头部

 

而 i 是从0~n的

每一轮都会把极值

放到 i 的位置


如何降序排列

 

升序(从小到大)

降序(从大到小)

具体是哪种排序

关键点就是条件表达式

如果是小于(<)

(从头到尾遍历时)

找出最小的往前放

结果就是升序排列

如果是大于(>)

(从头到尾遍历时)

找出最大的往前放

结果就是降序排列

 


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

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

举例

从前往后找

找到放最后

 


【练习】

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



 

【总结】
 

·基本原理·

依次比较

找出极值

最后交换

·套路写法·

两层循环

一层轮数

一层寻找

初始索引

记录极值

第二层循环外交换

·注意事项·

从头遍历

从尾遍历

放在头部

放在尾部

第二层循环外交换


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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值