简介
选择排序(Selection Sort),是一种简单直观的排序算法。
它的工作原理是:第一次从待排序的元素列中选出最小的一个元素,存放在元素列的起始位置,然后从剩余的未排序元素中找到最小元素,放到已排序元素列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
选择排序是不稳定的排序算法。
思路
(以升序为例)依次遍历元素列中的每个元素,找出最小的一个元素,和第一个元素交换
(1)第一次循环:找到元素列中最小的元素,与起始位置的元素交换;
(2)第二次循环:找到元素列中第二小的元素,与列中第二个位置的元素交换
(3)按这种方法,一直交换到元素列有序。
例子:升序排序元素列[3, 5, 4, 6, 1, 2]
分析
特点:选择排序是不稳定的,如果存在相同的元素,排序后这几个相同元素间的顺序可能和排序前不同
时间复杂度:最好、最坏、平均都是O(N2)
代码
def selectSort(List):
size = len(List)
if size == 0:
return []
for i in range(size-1):
min_index = i
for j in range(i, size):
if List[j] < List[min_index]:
min_index = j
List[i], List[min_index] = List[min_index], List[i]
return List