十大經典排序演算法之 選擇排序

2021-10-01 01:24:32 字數 1289 閱讀 6905

選擇排序的工作原理簡單直觀,和氣泡排序也有異曲同工之處,它將需要排序的陣列分為有序區和無序區,首先在無序區選出最小的數,放到有序區的末尾(有序區為從小到大排序好的陣列,因此此時從無序區選出的最小的數一定大於有序區中最大的數),以此類推,直到陣列有序。

時間複雜度 (平均)

時間複雜度(最壞)

時間複雜度(最好)

空間複雜度

穩定性o(n

2)o(n^2)

o(n2)o(n

2)o(n^2)

o(n2)o(n

2)o(n^2)

o(n2)o(1

)o(1)

o(1)

穩定同氣泡排序類似,選擇排序也包含兩層迴圈,一層是在無序區中找到最小的數,一層是除了已經排好的較小的數(有序區)之外,重複比較排序,比較過程如下圖所示(圖比較粗糙,見諒~~):

拿圖中第三行來舉例,[4, 5, 10]被認為是有序區,[7, 8]為無序區,從無序區中找到了最小數7,放入到有序區的末尾,後來的步驟以此類推。

不多說了,python實現的**如下:

def

selection_sort

(arr):if

len(arr)==0

or arr is

none

:return

none

for i in

range

(len

(arr)-1

):# 只需要 lne(arr)-1 次選擇排序

minindx = i

for j in

range

(i+1

,len

(arr)):

if arr[j]

< arr[minindx]

: minindx = j

arr[i]

, arr[minindx]

= arr[minindx]

, arr[i]

return arr

if __name__ ==

'__main__'

: arr =[54

,26,93

,17,77

,31,44

,55,20

]print

(selection_sort(arr)

)

十大經典排序演算法 2 選擇排序

選擇排序 選擇排序是一種簡單直觀的排序演算法,用到它的時候,資料規模越小越好。唯一的好處可能就是不占用額外的記憶體空間了吧。演算法步驟 演示 實現 function selectionsort arr temp arr i arr i arr minindex arr minindex temp r...

十大經典排序演算法(二 選擇排序)

首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置。再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。重複第二步,直到所有元素均排序完畢。1 function selectionsort arr 10 11 temp arr i 12 arr i arr minind...

十大經典排序演算法

載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...