資料結構32:選擇排序

xddwz發表於2020-09-27

選擇排序Selection Sort

選擇排序對氣泡排序進行了改進,保留了其基本的多趟對比的思路,每趟都使當前最大項就位。

但是選擇排序對交換進行了削弱,每趟僅進行一次交換,記錄最大項的所在位置,最後再跟本趟最後一項進行交換。

選擇排序的時間複雜度比氣泡排序稍優。

對比次數不變,還是O(n^2)

交換次數減少,為O(n)

def selectSort(alist):
    for fillslot in range(len(alist)-1, 0, -1):
        positionOfMax = 0
        for location in range(1, fillslot+1):
            if alist[location] > alist[positionOfMax]:
                positionOfMax = location

        temp = alist[fillslot]
        alist[fillslot] = alist[positionOfMax]
        alist[positionOfMax] = temp
    return alist

相關文章