图解选择排序算法

Posted Python与算法社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解选择排序算法相关的知识,希望对你有一定的参考价值。

一、说在前面

一直想写一些简单易懂的文章,因为平时看的很多的书籍或者文章都是看着很难受的感觉,当然,这并不是说书籍写的不好,只是说对于一些没有太多基础或者基础不是很好的来说,相对来说还是比较难以理解的。

这个系列主要是写一些简单易懂的数据结构与算法的文章,同时也是帮助自己再理解理解这方面的知识。

作为数据结构与算法的开篇,还是以排序算法作为第一部分的内容,需要注意的是,这一系列的文章并不是涉及到很多理论性质的知识,因为前面说了,主要还是希望文章是简单易懂的,希望能达到读故事的感觉。如果需要去学习理论性质的知识,可以去查看相关的数据结构与算法的书籍。

二、选择排序算法

今天早上,老师又叫我们去操场上做早操,做早操之前呢,今天也需要排队,到操场的同学有5个人,今天的排序方法还是按照身高由低到高排列。

图解选择排序算法
图片1.png

但是,今天老师说换一种方法排队,我来给你们排队,昨天你们排队太慢了。

于是,老师说:第一个同学站在原地不要动。

图解选择排序算法
图片2.png

然后,我从后面4个同学当中挑一个最矮的同学,这个同学站在第一个同学后面,你们两个站在原地不要动。

图解选择排序算法
图片3.png
图解选择排序算法
图片4.png

之后,老师再从后面3个同学里面挑一个最矮的同学,然后让他站在前面两个排好的同学后面,这样这三个同学就排好了,你们站着不要动。

图解选择排序算法
图片5.png
图解选择排序算法
图片6.png

老师又从最后两个同学中挑一个最矮的同学,让他站在前面三个已经排好的队伍后面,这样,这四个同学就排好队列,这四个同学站着不要动。

图解选择排序算法

图解选择排序算法
图片7.png

四个同学排好了,只有最后一个同学了,然后,这个同学自己站到前面四个已经排好队的队伍的最后,这样5个同学的位置就排好了。

图片8.png
图片9.png

老师看到排好了队,非常开心,对同学们说:“我排队是不是比你们自己排队快啊!”

然后,这位程序员老师说,哪位同学懂了刚刚我给你们排队的思想,能不能叙述一下,这时候,小明说:我会!,于是,小明说了一下思想:

初始时在队伍中找到最小(大)元素,放到队伍的起始位置作为已排好队伍;然后,再从剩余未排序队伍中继续寻找最小(大)元素,放到已排序队伍的末尾。以此类推,直到所有元素均排序完毕。

老师说,队列都给你们排好了,小明同学也又很好的阐述了思想,你们把代码实现以下吧(哈哈哈!)。

性能分析

最差时间复杂度:O(n^2)
最优时间复杂度:O(n^2)
平均时间复杂度: O(n^2)
稳定性:不稳定

以上是关于图解选择排序算法的主要内容,如果未能解决你的问题,请参考以下文章

图解算法系列之选择排序

图解冒泡选择和插入排序

图解排序算法之3种简单排序(选择,冒泡,直接插入)

图解排序算法之3种简单排序(选择,冒泡,直接插入)

图解排序算法之3种简单排序(选择冒泡直接插入)

图解数据结构排序全面总结(下)