选择排序

113 阅读1分钟

基本思想

首先在未排序的数列中找到最小元素,然后将其放到数列的起始位置。

接着再从剩余未排序的元素中继续寻找最小元素,然后放到已排序数列的末尾。依此类推,直到无需元素全部加入到有序数列中,排序完毕。



算法性能分析

  1. 时间复杂度:在简单排序过程中,元素移动的操作次数很少,不会超过3(n1)3(n-1)次,最好的情况是移动nn次,此时初始序列就已经是有序的。但元素的比较次数与序列的初始排列状态无关,始终是n(n1)/2n(n-1)/2次,所以时间复杂度为O(n2)O(n^2)。对于有nn个元素的数列,便利一趟的时间复杂度为O(n)O(n),需要遍历n1n-1次,故时间复杂度为O(n2)O(n^2)
  2. 空间复杂度:同冒泡排序一样,只有在两个元素交换时需要一个辅助空间,为O(1)O(1)


算法特点

1. 稳定性:会改版相同大小元素的相对位置,是一种不稳定的排序。

2. 适用性:可用于顺序存储和链式存储。

3. 移动次数较少,当每一记录占用的空间较多时,此方法比直接插入排序快。