图解数据结构—选择排序|Zam9036博客
文章目录
算法概述
选择排序(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的博客!
- 点赞 1
- 收藏
- 分享
- 文章举报
- 图解数据结构-插入排序|Zam9036博客
- 初学数据结构---简单选择排序
- 数据结构与算法——冒泡排序,选择排序,直接插入排序
- 数据结构与算法_选择排序
- 【东东学数据结构】选择排序
- 数据结构-选择排序-堆排序
- 数据结构的排序:插入类、交换类、选择类、归并类
- 数据结构--选择排序
- 【算法和数据结构】排序(二)选择排序(C++实现)
- 数据结构-排序总结(冒泡 插入 选择 归并)
- 数据结构-排序(4):直接选择排序
- 数据结构(1)-选择排序和插入排序
- 数据结构--向量--选择排序
- 数据结构 数组(排序:冒泡选择插入)
- JAVA数据结构--选择排序
- 深层次两张图解经典6大排序与6大基础数据结构——学完这些,妈妈再也不用担心我的排序算法与数据结构,学习笔记大放送
- 【数据结构】Java实现各类经典排序算法——选择排序、冒泡排序
- 【数据结构】选择排序 二分查找 C++
- 数据结构只选择排序、冒泡排序、插入排序