首页 > 代码库 > 选择排序 Selection Sort

选择排序 Selection Sort

选择排序算法的运作如下:

  每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。

  选择排序算法的实现我放在这里

 

时间/空间复杂度:

  选择排序的交换操作介于0和(n-1)次之间。选择排序的比较操作为n(n-1)/2次之间。选择排序的赋值操作介于0和3(n-1)次之间。

  比较次数O(n^2),交换次数O(n),最好情况是已经有序,交换0次;最坏情况是逆序,交换n-1次。交换次数比冒泡排序少,由

于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。

  最好,最坏,平均时间复杂度均为O(n^2)

  原地操作几乎是选择排序的唯一优点,当对空间复杂度(space complexity)要求较高时,可以考虑选择排序;但选择排序实际

适用的场合非常罕见。空间复杂度为O(1)

 

算法稳定性:

  例如对:10, 12, 2, 12,3,2的排序(从大的数开始排序),最终两个12的位置会被交换。

  选择排序是不稳定的排序方法。

 

Reference:

选择排序-wikipedia: http://zh.wikipedia.org/wiki/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F

选择排序 Selection Sort