Python 选择排序
每次选择最小,然后和第一个交换,第二个交换,循环次数n-1,n-2,…1,n(n-1)/2,平均复杂度 O(n2) O ( n 2 ) ,最坏复杂度 O(n2) O ( n 2 )
每次进行交换,不稳定,比如将相同的第一个数交换到末尾,那就和中间与其相同的数的顺序改变
def select_sort(L):
for i in range(len(L)-1):
# 先取第一位数作最小
# 循环次数n-1,最后一次只剩下一个,不用排序
min_ = i
for j in range(i,len(L)):
# 在i到剩余范围内查找
if L[j] < L[min_]:
# 这里是和min_进行比较,所以用min_,而不是i
min_ = j
L[i], L[min_] = L[min_], L[i]
注意要点:选取最小值下标,和最小值进行交换下标,最后和前面的 i 下标值交换