**选择排序是一种灵巧的算法,但其速度不是很快**。
它每遍历一次列表只交换一次数据,即进行一次遍历时找到最大的项,完成遍历后,再把它换到正确的位置。第一次遍历后,最大的数据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要n-1次遍历来排好n个数据,因为最后一个数据必须在第n-1次遍历之后才能归位。
def findSmallest(alist):
smallest = alist[0]
smallest_index = 0
for i in range(1, len(arr)):
if alist[i] < smallest:
smallest = alist[i]
smallest_index = i
return smallest_index
def selectionSort(alist):
newAlist = []
for i in range(len(alist)):
smallest = findSmallest(alist)
newAlist.append(arr.pop(smallest))
return newAlist
print (selectionSort([5, 3, 6, 2, 10]) )
def selectionSort(alist):
for i in range(len(alist)-1,0,-1):
Max_index=0
for j in range(1,i+1):
if alist[j]<alist[Max_index]:
Max_index =j
temp = alist[i]
alist[i] = alist[Max_index]
alist[Max_index] = temp
alist=[5,3,6,2,10]
selectionSort(alist)
print(alist)