算法题--选择排序
Posted 昊小邦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题--选择排序相关的知识,希望对你有一定的参考价值。
大家好, 这一期博主给大家讲解一个新的排序算法--选择排序. 这种算法也属于比较基础, 也很容易理解的一类. 看过上一期冒泡排序的伙伴们对这种逻辑思维还有印象吗? 如果没有也没关系, 因为这一次的算法可能比冒泡更容易理解. 话不多说, 接下来直接开始正题.
首先如图是一串打乱的数字组合.
选择排序的思想与冒泡有些类似, 但过程不同.
注意: 所有的排序都是在计算机内部执行的. 主人公是计算机. 因为计算机只会一步一步的执行. 所以我们需要把每个步骤都清清楚楚的告诉给计算机才可以.
具体步骤是: 让计算机记录当前数字并依次向后寻找最小值, 并将最小值与最开始记录的数字位置对调.共循环六次即可.
(1) 首先第一次循环, 从第一个数字开始, 计算机获得了数字1, 然后依次向后进行比较, 直到最后一个数字, 发现没有数字比1更小. 所以让计算机把1放在了首位.
(2) 第二次循环, 从第二个数字开始, 计算机获得了数字3, 然后依次向后进行比较. 因为2<3, 所以计算机将它保存的数字变为2. 然后继续向后比较, 直到末尾, 因为没有比2更小的数字, 最后计算机将2与3位置对调. 结果如图:
(3) 第三次循环, 从第三个数字开始, 计算机再次获得数字3, 并依次向后进行比较, 没有发现比3更小的数字, 于是3在原来的位置不动.
(4) 第四次循环, 从第四个数字开始, 计算机获得数字7, 并依次向后进行比较, 由于 5<7, 所以计算机将它保存的数字变为5, 并继续向后比较, 又发现4<5, 计算机又将它保存的数字变为4,再继续向后比较, 发现没有比4更小的, 于是将4 与7的位置对调. 如图:
(5) 第五次循环, 从第五个数字开始, 计算机获得数字5, 并依次向后比较, 没有发现比5更小的, 于是5在原来位置不动.
(6) 第六次循环, 从第六个数字开始, 计算机获得数字7, 并依次向后比较, 由于6<7, 并且也比较到最后一个数字了. 直接让6,7交换位置即可. 结果如图:
这样就排完序了. 是不是很简单. 其实这种排序算法有很多, 之后博主会给大家讲解九种不同的排序算法. 理解的难度也会层层的增加. 下一期, 博主继续给大家讲解另一种初级的排序算法--插入排序. 如果有的小伙伴喜欢挑战, 不妨自己想想看, 还可以怎样排序. 可以将你的想法推给博主, 打上"我想出的排序算法是:", 博主将会在三天内做出评估.
以上是关于算法题--选择排序的主要内容,如果未能解决你的问题,请参考以下文章
Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序