1. 程式人生 > >Python實現選擇排序

Python實現選擇排序

演算法介紹

選擇排序(Selection Sort)是一種簡單直觀的排序演算法。氣泡排序每比較一次就可能交換一次,但是選擇排序是將一輪比較完後,再把最小的放到最前的位置(或者把最大的放到最後)。

選擇排序的流程為:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對N個元素進行排序最多交換N-1次。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。

程式碼實現

def
selectionSort(source):
# 進行n-1次選擇操作 for i in range(len(source) - 1): min = i # min存放最小值的下標,初始設為i for j in range(i, len(source)): if source[j] < source[min]: min = j # 更新最小值的下標 if i != min: #將最小值放到下標i的位置 source[min], source[i] = source[i], source[min] return
source s = [8,6,13,7,17,1,4,5,2] print(selectionSort(s)) # 輸出: # [1, 2, 4, 5, 6, 7, 8, 13, 17]

演算法效率分析

最優時間複雜度:O(N2)
最壞時間複雜度:O(N2)
平均時間複雜度:O(N2)
空間複雜度:O(1)
穩定性: 假設a=b,且a在b前面,而某輪選擇中最小值在b後面,當a恰好在開頭時,交換過後b就在a前面了,所以選擇排序是不穩定的。給個例子([6,5,4,6,2])自己體會。