基本思想
首先在未排序的数列中找到最小元素,然后将其放到数列的起始位置。
接着再从剩余未排序的元素中继续寻找最小元素,然后放到已排序数列的末尾。依此类推,直到无需元素全部加入到有序数列中,排序完毕。
算法性能分析
- 时间复杂度:在简单排序过程中,元素移动的操作次数很少,不会超过次,最好的情况是移动次,此时初始序列就已经是有序的。但元素的比较次数与序列的初始排列状态无关,始终是次,所以时间复杂度为。对于有个元素的数列,便利一趟的时间复杂度为,需要遍历次,故时间复杂度为。
- 空间复杂度:同冒泡排序一样,只有在两个元素交换时需要一个辅助空间,为
算法特点
1. 稳定性:会改版相同大小元素的相对位置,是一种不稳定的排序。
2. 适用性:可用于顺序存储和链式存储。
3. 移动次数较少,当每一记录占用的空间较多时,此方法比直接插入排序快。