Python實現選擇排序

2021-08-11 04:33:45 字數 1089 閱讀 7407

選擇排序:一種簡單直觀的排序演算法。

工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘的未排序的元素中繼續尋找最小(大)元素,然後放到已排序的末尾。直到所有元素均排序完畢。

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

使用python**實現選擇排序:

# list 傳遞的引數,order排序 預設為1,公升序,否則降序,僅支援整數型別

def selectsort(list, order=1):

if not isinstance(order, int):

raise typeerror('order型別錯誤')

for i in range(len(list) - 1):

# 記錄最小位置

min_index = i

# 篩選出最小資料

for j in range(i + 1, len(list)):

if order == 1:

if list[j] < list[min_index]:

min_index = j

else:

if list[j] > list[min_index]:

min_index = j

# 交換位置

if min_index != i:

list[i], list[min_index] = list[min_index], list[i]

print list

selectsort([1, 4, 9, 6, 3, 100], 1)

時間複雜度:

最優時間複雜度:o(n^2)

最壞時間複雜度:o(n^2)

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

動態圖演示:

Python實現選擇排序

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

python實現選擇排序

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

選擇排序python實現

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