选择排序的原理:
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序的末尾。直到所有元素均排序完毕。
**举个例子来说吧:**小时候老师小朋友们排成一队,但是要井井有序,所以老师说,从高到低排成一列,这里排除(杠精人为因素,有的朋友比较幽默,那人家不会自己排啊,还要你写算法来排排到什么时候了)这个时候老师就要开始比较了,先站成一排,然后把第一个人和他后面的同学依次进行比较,经过这样一番对比之后,找出了最高的那个人,并把这个最高的放到最前面站队,然后最高的已经确定所以下次进行比较的时候这个同学就不用参加对比了,这里要注意(每次选出最高的人之后,再进行比较的时候不能再算这个人,要让剩下的人进行比较)接下来运用上面的逻辑再循环,最终将从高到低依次站好队,老师终于可以休息了。
上代码:
def SelectSort(list):
for i in range(len(list)-1):#控制比较的轮数
min_index=i#设置最小值为当前值(i)
for j in range(i+1,len(list)):i+1是为了让每次最小值比较他后面的数
if list[min_index]>list[j]:用当先最小index的值分别与后面的值进行比较,以便获取最小index
min_index=j#如果后面的数小于当前最小值,那么把两者下标交换
list[i], list[min_index] = list[min_index], list[i]#在进行完一轮比较之后,把最小的数和当前i下标指向的数值交换
return list
if __name__ == '__main__':
a = [6, 9, 3, 5, 0, 1, 4, 2, 7]
print(SelectSort(a))