python實現選擇排序

2021-08-19 18:53:00 字數 1633 閱讀 6066

選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。

排序過程:

時間複雜度:o(n2)

穩定性:不穩定(考慮公升序每次選擇最大的情況)

'''def selectsort(alist):

'''選擇排序'''

n = len(alist)

for i in range(n-1):

# 把未排序的第乙個看做最小,依次與後面未排序的進行比較

min_index = i

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

# 如果不是最小,讓min_index等於最小數的下標

if alist[min_index] > alist[j]:

min_index = j

# 比較結束後,即找出了最小的值,把它放在已排序的後面

alist[i], alist[min_index] = alist[min_index], alist[i]

if __name__ == '__main__':

alist = [3,4,6,34,1,2,43,5,8,6,56,9,7,4]

print(alist)

select_sort = selectsort(alist)

print(alist)

執行結果:

/home/longhui/desktop/資料結構與演算法/venv/bin/python /home/longhui/desktop/資料結構與演算法/venv/mycode/6_sorting_and_searching/selection_sort.py

[3, 4, 6, 34, 1, 2, 43, 5, 8, 6, 56, 9, 7, 4]

[1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 34, 43, 56]

process finished with exit code 0

Python實現選擇排序

選擇排序 一種簡單直觀的排序演算法。工作原理 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘的未排序的元素中繼續尋找最小 大 元素,然後放到已排序的末尾。直到所有元素均排序完畢。優點 選擇排序與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每...

Python實現選擇排序

實現思路 將乙個序列分為兩部分,前面是有序序列,後面是無序序列,不斷的將後面的無序序列中的最小值新增到前面的有序序列中,直到後面的無序序列中沒有值,開始的時候將第乙個值作為有序序列。實現 arr 7,4,3,67,34,1,8 length 7 defselect sort arr n len ar...

選擇排序python實現

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。注意每次查詢到最小值之後要將之從原列表中彈出,避免重複查詢。1 deffindsmallest d 2 sma...