Python中選擇排序及其演算法複雜度

2021-08-31 23:49:22 字數 1020 閱讀 9717

選擇排序(selection sort)是一種簡單直觀的排序演算法。

它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。 

下圖為其演示圖:

"""選擇排序"""

n = len(alist)

for j in range(n-1): # j:0---n-2

min_index = j

for i in range(j+1, n):

if alist[min_index] > alist[i]:

min_index = i

alist[j], alist[min_index] = alist[min_index], alist[j]

print(alist)

return alist

if __name__ == "__main__":

list1 = [100, 21, 35, 45, 67, 58, 79, 32]

list2 = [233, 324, 333, 212, 309, 780, 525, 378]

select_sort(list1)

select_sort(list2)

第一次內迴圈比較n - 1次,然後是n-2次,n-3次,……,最後一次內迴圈比較1次。

共比較的次數是(n - 1) + (n - 2) + ... + 1,求等差數列和,得(n - 1 + 1)* n / 2 = n^2 / 2

捨去最高項係數,其時間複雜度為 o(n^2)

選擇排序的演算法是一種不穩定的演算法,效能略微由於氣泡排序。

python 排序演算法 選擇排序

所謂選擇排序,它是排序演算法中,一種簡單 直觀且靈巧的排序演算法,但是速度不是很快。選擇排序,見名思意就是選擇乙個元素,與其他元素進行比較,將乙個個的最大或最小值拿出來,放到另乙個列表中的這個過程,或者說行為我們稱之為選擇排序。1 首先得有乙個需要排序的列表,比如數字列表 2 拿到這個列表以後,我們...

Python 演算法 選擇排序

coding utf 8 選擇排序 defselect sort lst 基本思想 第1趟,在待排序記錄r1 r n 中選出最小的記錄,將它與r1交換 第2趟,在待排序記錄r2 r n 中選出最小的記錄,將它與r2交換 以此類推,第i趟在待排序記錄r i r n 中選出最小的記錄,將它與r i 交換...

python演算法 選擇排序

眾所周知,我們記憶體的工作原理就像我們逛商場時的存物櫃,每個櫃子只能放進乙個物品,你有兩樣物品要存,將物品存進 放進 櫃子裡後,你就可以去逛商場了 計算機就是多個櫃子的集合,每個單獨的櫃子都有自己的位址 而當我們需要存多個資料的時候,我們有兩種基本方式 陣列和鍊錶 我們還是拿我們的日常生活舉個栗子,...