選擇排序原理:
每一趟從元素列表中選取一個(gè)最小的元素作為有序序列中第i個(gè)元素?
意思就是:
下標(biāo):--------- 0 1 2 3 4 5
列表 :seq = [5,4,3,0,1,2]
每次循環(huán),都從列表中選出值最小的元素,與第i個(gè)元素進(jìn)行交換。
例如:
第一個(gè)循環(huán):i = 0,值 = 5蓖墅,此時(shí)列表最小元素為 0,下標(biāo) = 3。則將seq[i]與seq[3]進(jìn)行交換眼姐,交換后的列表為:[0,4,3,5,1,2]
第二次循環(huán):i = 1, 值 = 4,此時(shí)列表最小元素為1佩番, 下標(biāo)為4众旗。則將seq[i]與seq[4]進(jìn)行交換,交換后的列表為:[0,1,3,5,4,2]
依次循環(huán)趟畏,直到排序完畢贡歧。
選擇排序的特點(diǎn):每次循環(huán),僅交換一次元素赋秀。
代碼如下:
seq = [5,4,3,2,1,0]
for i in range(len(seq)-1):
min_index = i #這個(gè)是下標(biāo)利朵,不是元素值
for j in range(i+1,len(seq)):
if seq[min_index]>seq[j]:
min_index = j #記錄最小元素的下標(biāo)
seq[i],seq[min_index] = seq[min_index],seq[i] #此時(shí)交換的才是真正的元素
print '第 %s 次循環(huán)' % (i+1),seq
print '排序后: ',seq
運(yùn)行結(jié)果如下: