您的位置:首页 > 理论基础 > 数据结构算法

图解数据结构—选择排序|Zam9036博客

2020-03-06 15:52 916 查看

文章目录

算法概述

选择排序(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 发布了26 篇原创文章 · 获赞 22 · 访问量 550 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: