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

演算法-04-選擇排序

'''
選擇排序與氣泡排序有類似,冒泡是匹配最大的資料找出來放最後,選擇排序是找最小的資料放最前.
選擇排序是把資料分成了兩塊區域,把從右邊找到的最小資料,放在左邊.
選擇排序是不穩定的
'''
def select_sort(alist):
for j in range(len(alist)-1): # 此處j表示右邊這組未經排序的資料中,第一個資料的下標
min_index = j # 先令該下標為最小資料的下標,等到找到比它還小的資料時,在進行位置的交換
for i in range(j+1, len(alist)): # 從右邊第一個資料開始,在右邊資料中找出比當前下標資料小的資料,交換二者的位置.

if alist[min_index] > alist[i]: # 當遇到比當前下標小的資料時,交換該資料與當前資料的下標
min_index = i # 交換兩個資料的下標
alist[j], alist[min_index] = alist[min_index], alist[j] # 交換左邊最後一個數據與找到的最小資料之間的位置.注意此步需要在第一個for
# 迴圈中執行,不可放錯在了第二個for迴圈當中

if __name__ == '__main__':
li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
print(li)
select_sort(li)
print(li)