今天学习的是选择排序的实现。实现的原理是把当前位置的元素和其它未排序的所有元素比较,满足条件则把索引值记录下来,每次遍历都能选出一个未排序的元素中最大(小)的一个。实现的小技巧是每次比较之后暂时只把索引记录下来,当前值和余下所有未排序的元素都比较完之后再执行交换。
def selectionSort(sort_list):
list_length = len(sort_list)
if list_length < 2:
return sort_list
for i in range (list_length):
minIndex = i
for j in range(i+1,list_length):
if sort_list[j] < sort_list[i]:
minIndex = j
if minIndex != i :
sort_list[i],sort_list[minIndex] = sort_list[minIndex],sort_list[i]
return sort_list
第10行的判断语句还是很有必要的,比如当前元素是未排序元素中最大(小)的一个,那么此时是不需要交换位置的,如果此时还执行一次交换,一是消耗资源,效率低,判断语句的资源消耗比赋值语句较低;二是有可能引起异常。