选择排序对于数组a[1:n]需要进行n次遍历,每次遍历找到第i大的元素,将其与第i位元素进行交换后对a[i+1:n]进行处理。每次遍历进行n-i次比较,1或0次交换,时间复杂度为O(n),对初始数据不敏感。
对选择排序进行优化可得到树形选择排序和堆排序。
def SelectSort(a):
for i in range(len(a)):
min = a[i]
index = i
for j in range(i,len(a)):
if a[j] < min:
min = a[j]
index = j
a[i],a[index] = a[index],a[i]
return a
if __name__ == '__main__':
a = [1, 7, 3, 9, 14, 2, 5, 9, 6, 10]
SelectSort(a)
print(a)