選擇排序的工作原理簡單直觀,和氣泡排序也有異曲同工之處,它將需要排序的陣列分為有序區和無序區,首先在無序區選出最小的數,放到有序區的末尾(有序區為從小到大排序好的陣列,因此此時從無序區選出的最小的數一定大於有序區中最大的數),以此類推,直到陣列有序。
時間複雜度 (平均)
時間複雜度(最壞)
時間複雜度(最好)
空間複雜度
穩定性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...
十大經典排序演算法
載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...