选择排序|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 看更多内容。 一个刚高考完的高三生在这里感谢您的观看, 我们下期再见。