以下内容为个人学习笔记的整理。
原理:
首先在未排序序列中,找到最小(大)的元素,放在序列起始位置,然后从剩余未排序序列中,寻找最小(大)的元素,放在已排序序列末尾,直到所有元素排序完毕。
示意图,动画:
实现代码(python):
def select_sort(alist):
'选择排序'
n = len(alist)
for j in range(n-1):
min_index = j
for i in range(j+1, n):
if alist[i] < alist[min_index]:
min_index = i
alist[j], alist[min_index] = alist[min_index], alist[j]
复杂度分析:
-空间复杂度
选择排序过程不需要额外的空间,因此空间复杂度为O(1)。
-时间复杂度
–最优时间复杂度:O(n^2)
–最坏时间复杂度:O(n^2)
–平均时间复杂度:O(n^2)
是否原地排序算法:
选择排序是一种原地排序算法
稳定性:
不稳定,比如2,6,5,2,1,第一次找到最小元素是1,和2交换,这样2个2的位置就变了。