算法概述
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
图解核心原理
假设我们需要对上图数列进行排序。
首先,我们需要对数列进行线性搜索(从头到尾逐个元素搜索),找出最小的元素值(最小为1)。
将值最小的元素(最小为1)与数列最左端的元素(原来数列最左端元素为6)互换。如果最小值已经在最左端,则不需要执行任何操作。
保持已经排好的元素位置不变(即1的位置不再改变),在剩余元素中找出值最小的元素(最小为2)。
将此时值最小的元素(最小为2)与未排序的数列最左端的元素(原来未排序的数列最左端元素为6)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2的位置不再改变),在剩余元素中找出值最小的元素(最小为3)。
将此时值最小的元素(最小为3)与未排序的数列最左端的元素(原来未排序的数列最左端元素为7)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3的位置不再改变),在剩余元素中找出值最小的元素(最小为4)。
将此时值最小的元素(最小为4)与未排序的数列最左端的元素(原来未排序的数列最左端元素为8)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3、4的位置不再改变),在剩余元素中找出值最小的元素(最小为5)。
将此时值最小的元素(最小为5)与未排序的数列最左端的元素(原来未排序的数列最左端元素为9)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3、4、5的位置不再改变),在剩余元素中找出值最小的元素(最小为6)。
将此时值最小的元素(最小为6)与未排序的数列最左端的元素(原来未排序的数列最左端元素为7)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3、4、5、6的位置不再改变),在剩余元素中找出值最小的元素(最小为7)。
将此时值最小的元素(最小为7)与未排序的数列最左端的元素(原来未排序的数列最左端元素为9)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3、4、5、6、7的位置不再改变),在剩余元素中找出值最小的元素(最小为8)。
将此时值最小的元素(最小为8)已经在最左端,则不需要执行任何操作。
继续保持已经排好的元素位置不变(即1、2、3、4、5、6、7、8的位置不再改变),在剩余元素中找出值最小的元素(最小为9)。将此时值最小的元素(最小为9)已经在最左端,则不需要执行任何操作。
现在,数列的顺序已经排好。
原创声明
文章作者:Zam9036
部分资料来自:http://algorithm.wiki
文章链接:https://zam9036.gitee.io/2020/01/11/22-Graphical-data-structure-selection-sort
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自Zam9036的博客!