0x01 原理
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
0x02 时间复杂度
选择排序的时间复杂度为 O( n 2 n^2 n2) ,是一个不稳定排序。
0x03 例子
题目:2,1,8,3,4,9,6
排序过程:
- 1,2,8,3,4,9,6
- 1,2,8,3,4,9,6
- 1,2,3,8,4,9,6
- 1,2,3,4,8,9,6
- 1,2,3,4,6,9,8
- 1,2,3,4,6,8,9
0x04 代码实现
def selection_sort(a):
for j in range(len(a)):
temp = j
for i in range(j+1,len(a)):
if (a[temp] > a[i]):
temp = i
if temp != j:
mid = a[temp]
a[temp] = a[j]
a[j] = mid
a = [9,6,3,1,8,9,22,75,36,95,12,45,20]
print(a)
selection_sort(a)
print(a)