选择排序是符合直观(接近直观)的排序,第一次内层循环选出最小的元素放在第一的位置,第二次内层循环从余下的元素选出最小的元素放在第二的位置,以此类推。
def sel_sort(l):
n = len(l)
for i in range(n-1):
minIdx, minVal = i, l[i]
for j in range(i+1, n):
if l[j] < minVal:
minVal = l[j]
minIdx = j
t = l[minIdx]
l[minIdx] = l[i]
l[i] = t
外层循环遍历到数组的倒数第二个元素
每一次循环得到余下元素(待排序元素)的最小值及其下标
minVal
与minIdx
的记录都是必须的