选择排序算法的基本思想是:假如一个列表中有n个数据,从列表中选出最小的一个数据与第一位数据进行交换,然后在剩下的数据中从第二位开始选择最小的数据与第二位的数据进行交换,以此类推,在进行了n-1次排序后,列表的数据就会按照从小到大的方式排序好。
下面可以看一个例子:
list = [5,4,8,9,2,3,1,6,7,10,5,12,8]
用Python对上面的列表进行选择排序
for i in range(len(list)-1):
for j in range(len(list[i+1:])):
if list[i] > list[i+1:][j]:
list[i+1+j],list[i]= list[i],list[i+1+j]
首先进行两个for循环,第一个是进行n-1次循环,第二个是把第i个数据与它后面的数据进行比较,如果它后面有小于它的数据,就把它们两个数据进行互换,在进行n-1次循环后,所有的数据就已排序好了。
可以看下每一次的排序过程
要注意的地方:
如果要交换列表里的两个数据不能用下面这种方式:
list[i], list[i+1:][j] = list[i+1:][j], list[i]
因为list[i+1:]
会生成一个新的列表,上面交换的是原列表的list[i]
与这个新列表的
list[i+1:][j]
交换了数据,只会改变list[i],并不会改变list在i后面的数据,所以用list[i+1+j]
来代替list[i+1:][j]