选择排序 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