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

算法概述

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

图解核心原理

选择排序核心原理1

假设我们需要对上图数列进行排序。

选择排序核心原理2

首先,我们需要对数列进行线性搜索(从头到尾逐个元素搜索),找出最小的元素值(最小为1)。

选择排序核心原理3

将值最小的元素(最小为1)与数列最左端的元素(原来数列最左端元素为6)互换。如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理4

保持已经排好的元素位置不变(即1的位置不再改变),在剩余元素中找出值最小的元素(最小为2)。

选择排序核心原理5

将此时值最小的元素(最小为2)与未排序的数列最左端的元素(原来未排序的数列最左端元素为6)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理6

继续保持已经排好的元素位置不变(即1、2的位置不再改变),在剩余元素中找出值最小的元素(最小为3)。

选择排序核心原理7

将此时值最小的元素(最小为3)与未排序的数列最左端的元素(原来未排序的数列最左端元素为7)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理8

继续保持已经排好的元素位置不变(即1、2、3的位置不再改变),在剩余元素中找出值最小的元素(最小为4)。

选择排序核心原理9

将此时值最小的元素(最小为4)与未排序的数列最左端的元素(原来未排序的数列最左端元素为8)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理10

继续保持已经排好的元素位置不变(即1、2、3、4的位置不再改变),在剩余元素中找出值最小的元素(最小为5)。

选择排序核心原理11

将此时值最小的元素(最小为5)与未排序的数列最左端的元素(原来未排序的数列最左端元素为9)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理12

继续保持已经排好的元素位置不变(即1、2、3、4、5的位置不再改变),在剩余元素中找出值最小的元素(最小为6)。

选择排序核心原理13

将此时值最小的元素(最小为6)与未排序的数列最左端的元素(原来未排序的数列最左端元素为7)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理14

继续保持已经排好的元素位置不变(即1、2、3、4、5、6的位置不再改变),在剩余元素中找出值最小的元素(最小为7)。

选择排序核心原理15

将此时值最小的元素(最小为7)与未排序的数列最左端的元素(原来未排序的数列最左端元素为9)互换。同样,如果最小值已经在最左端,则不需要执行任何操作。

选择排序核心原理16

继续保持已经排好的元素位置不变(即1、2、3、4、5、6、7的位置不再改变),在剩余元素中找出值最小的元素(最小为8)。

选择排序核心原理17

将此时值最小的元素(最小为8)已经在最左端,则不需要执行任何操作。

选择排序核心原理18

继续保持已经排好的元素位置不变(即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的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值