排序演算法之 '選擇排序'
阿新 • • 發佈:2020-07-17
選擇排序
原理如下:
- 首先假定陣列中最大元素的下標為 0 , 即陣列中的第一個元素。
- 通過 for 迴圈,將第一個元素與剩餘元素逐一比較,比較過程中,如:第一個元素大於第二個元素,則更改最大元素的下標為 1,依次類推得到陣列中真實的最大元素,將此最大元素放置在陣列的最後位置,注意陣列中的最大元素的位置已確定,不再更換。
- 重複上述操作(除去陣列中最大元素不參與比較)可以依次確定陣列中的第二大、第三大等元素的位置。
- 直至整個陣列都已順序排列為止。
演算法穩定性
選擇排序中相同元素的前後順序會發生改變,所以選擇排序是一種非穩定型的排序演算法。
Python實現
def choose_sort(lst): length = len(lst) for j in range(length): max_index = 0 for i in range(1, length - j): if lst[max_index] < lst[i]: max_index = i lst[max_index], lst[length - 1 - j] = lst[length - 1 - j], lst[max_index] return lst if __name__ == '__main__': lst = [3, 4, 5, 7, 1, 2, 6, 9, 0] print(choose_sort(lst)) # [0, 1, 2, 3, 4, 5, 6, 7, 9]