1. 程式人生 > 實用技巧 >排序演算法之 '選擇排序'

排序演算法之 '選擇排序'

選擇排序

原理如下:

  1. 首先假定陣列中最大元素的下標為 0 , 即陣列中的第一個元素
  2. 通過 for 迴圈,將第一個元素剩餘元素逐一比較,比較過程中,如:第一個元素大於第二個元素,則更改最大元素的下標為 1,依次類推得到陣列中真實的最大元素,將此最大元素放置在陣列的最後位置,注意陣列中的最大元素的位置已確定,不再更換
  3. 重複上述操作(除去陣列中最大元素不參與比較)可以依次確定陣列中的第二大、第三大等元素的位置。
  4. 直至整個陣列都已順序排列為止。

演算法穩定性

選擇排序中相同元素的前後順序會發生改變,所以選擇排序是一種非穩定型的排序演算法

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]