选择排序|Selection Sort
第二期冒泡排序与排序的稳定性: https://wznmickey.com/2020/bubble-sort/
视频版:
Bilibili: https://www.bilibili.com/video/BV1W5411e7cF
YouTube: https://www.youtube.com/watch?v=e3Gvnat-_uQ
文字版:
这是一次考试中你们班同学考试的成绩,
输入数据后,电脑可以快速告诉你最高分与排名,
电脑是怎么做到的?
如何有序排列数字?
大家好,这里是静谈算法,
我是静静。
你在看的是排序算法的第一期,选择排序。
不妨先看一个简单的情况。
这里是三个同学的成绩,
要是让你对它从大到小排列。
你可能会说,这有什么困难的?
一眼就能看出答案是98、79、27。
但是,当面对这么多数字时,
你还能一眼看出吗?
不妨看看在没有电脑帮助时,
老师是如何做的?
在成绩中,最高分总是受关注的,
老师往往会翻一遍所有人的分数,寻找最高分。
同理,我们可以先找到最大数,
再找次大数,一直下去。
以这五个数为例,
我们先把第一个数86当作最大值,
与第二个数85进行比较,86大于85,
于是我们继续与第三个数69比较,仍旧较大,
然后是76,最后是98,
此时98大于最大值,
于是我们把98当作新的最大值,
此时已经与数列中的所有数字都比较过了,
所以98是最大值,我们将98与第一个数字交换。
新数列为98、85、69、76、86,
此时的第一个数是数列中的最大值,
于是开始寻找次大值,
先将第二个数85作为次大值,
同之前一样进行比较,先69,
再76,最后是86,
此时85小于86,
于是我们将86作为次大值,
这时到了数列最后一个数,比较结束,
于是将86与第二个数进行交换。
数列变为98、86、69、76、85,
再将69作为第三大的数,与76进行比较,小于76,
于是76变为当前的较大值,
之后76与85比较,小于85,变为85,
现在又一次到达数列末尾,
于是将85与数列中的第三个数69交换。
数列变为了98、86、85、76、69,
同样的,现在将第四个数76作为大值,
与下一个数69进行比较,大值没有改变,
此时76与第四个数进行交换,注意到76就是第四个数,
所以数列没有变,还是原来的顺序。
此时较大的4个数都已排列完,
剩余的第5个数自然成为最小值,
排序完成。
这样的打擂台式的排序一直选择最大值进行交换,
所以称为选择排序。
当然,排序的方法有许多,
选择排序是最为基础的一种,
之后还有更多的排序算法介绍给大家。
喜欢的朋友不要忘记点赞加关注,
也可以访问静静的小窝
https://wznmickey.com
看更多内容。
一个刚高考完的高三生在这里感谢您的观看,
我们下期再见。