选择排序原理:
每一趟从元素列表中选取一个最小的元素作为有序序列中第i个元素。
意思就是:
下标:--------- 0 1 2 3 4 5
列表 :seq = [5,4,3,0,1,2]
每次循环,都从列表中选出值最小的元素,与第i个元素进行交换。
例如:
第一个循环:i = 0,值 = 5,此时列表最小元素为 0,下标 = 3。则将seq[i]与seq[3]进行交换,交换后的列表为:[0,4,3,5,1,2]
第二次循环:i = 1, 值 = 4,此时列表最小元素为1, 下标为4。则将seq[i]与seq[4]进行交换,交换后的列表为:[0,1,3,5,4,2]
依次循环,直到排序完毕。
选择排序的特点:每次循环,仅交换一次元素。
代码如下:
seq = [5,4,3,2,1,0]
for i in range(len(seq)-1):
min_index = i #这个是下标,不是元素值
for j in range(i+1,len(seq)):
if seq[min_index]>seq[j]:
min_index = j #记录最小元素的下标
seq[i],seq[min_index] = seq[min_index],seq[i] #此时交换的才是真正的元素
print '第 %s 次循环' % (i+1),seq
print '排序后: ',seq
运行结果如下: