选择排序(Selection sort)是一种简单直观的排序算法
排序算法有很多, 其中很大一类是通过对数组中的元素进行比较来实现排序, 叫做比较排序。前面介绍的冒泡法和现在介绍的选择排序法,都是最简单直观的比较排序算法。
算法描述
选择排序(Selection sort)的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。
下面我们分步骤介绍:
初始化:
排好序的部分是空,
未排序的部分包括整个输入队列元素
在每个循环pass中
在未排序的部分找到最小(或者最大)的元素
把它放到排好序部分的末尾
重复这样的操作:
直到整个数列都排序完毕:
算法改进
上面实现的算法并不是实际中真正使用的选择排序算法。真正的选择排序算法是不需要使用额外的存储空间。 下面我们来巧妙避免使用额外的Memory。
1. 找到最小元素
2.和最左边的没有排序的元素交换
3. 未排序部分的长度减少了1位,未排序部分向右缩小一位
4.一直重复这样的操作,直到全部序列排序完毕:
算法的动图演示(wikipedia)
注:红色表示在当前循环中已经找到的最小元素。
橘黄色表示已经排序完成的部分。
算法实现
为了便于理解,我们把代码分几步来实现。
请看懂一个示意图后再看下一个示意图,谢谢。
问题来了,想一想,再往下看。
答案是i.
又来一个思考题,别浪费:)
答案:
小测验
在空格处应该填入什么?
2. 完成下面流程图:
算法复杂度
练习题答案
联系客服