今天學習的是選擇排序的實現。實現的原理是把當前位置的元素和其它未排序的所有元素比較,滿足條件則把索引值記錄下來,每次遍歷都能選出一個未排序的元素中最大(小)的一個。實現的小技巧是每次比較之後暫時只把索引記錄下來,當前值和餘下所有未排序的元素都比較完之後再執行交換。
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行的判斷語句還是很有必要的,比如當前元素是未排序元素中最大(小)的一個,那麼此時是不需要交換位置的,如果此時還執行一次交換,一是消耗資源,效率低,判斷語句的資源消耗比賦值語句較低;二是有可能引起異常。