菜鳥學演算法 選擇排序

2021-09-10 08:14:02 字數 1301 閱讀 5035

例如有一樣本[3,6,8,9,5,4,7,1,2,0],使用選擇排序從小到大排序過程如下:

樣本:[3,6,8,9,5,4,7,1,2,0]

有序集合:

第一次選擇:

最小值=3,

比較值=6,3<6,

最小值=3,

比較值=8,3<8,

最小值=3,

比較值=9,3<9,

最小值=3,

比較值=5,3<5,

最小值=3,

比較值=4,3<4,

最小值=3,

比較值=7,3<7,

最小值=3,

比較值=1,3>1,

最小值=1,

比較值=2,1<2,

最小值=1,

比較值=0,0<1,

最小值=0,存入有序集合,樣本彈出0

樣本:[3,6,8,9,5,4,7,1,2]

有序集合:[0]

如此這般,不斷的進行選擇最小值,然後存入有序結合,直至樣本中無資料。

選擇排序是一種靈巧的演算法,但其速度不是很快。乙個容量為n的樣本空間,第一次需要比較n-1次,第二次需要比較需要n-2次,比較9次選出10個值,即:

(n - 1) + (n - 2) + ... + 1 = (n - 1 + 1)* n / 2 = n^2 / 2

所以選擇排序的時間複雜度簡化為為o(n^2)

list = [3,6,8,9,5,4,7,1,2,0,]

def select_min(list):

min = list[0]

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

next = list[i]

if min > next:

min = next

list.remove(min)

return min

def sort(list):

sort_arr =

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

return sort_arr

print(sort(list))

e:\dataanalysis\tools\python3\python.exe e:/dataanalysis/tools/python3/project/suanfa/selectionsort/selection_sort.py

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

process finished with exit code 0

菜鳥也來學演算法之氣泡排序

氣泡排序可以說是眾多排序演算法之中較簡單的一種,思想與選擇排序類似,選擇排序每一次遍歷取出最小的數放在首位 暫時這樣認為 而氣泡排序則每一次遍歷把最大的數放在陣列的最後乙個位置,舉個例子 12,56,34,789,8,28 第一次遍歷 12,34,56,8,28,789 第二次遍歷 12,34,8,...

菜鳥學演算法 廣度優先演算法

廣度優先演算法是在圖中的一種遍歷方法,圖用來模擬一組連線,關係網等等,圖由節點node和邊edge組成,乙個節點可能與眾多節點直接相連,這些節點被稱為鄰居 廣度優先搜尋是一種用於圖的搜尋演算法,可以解決兩類問題,如上圖,a節點有前往到g節點的路徑嗎?a節點前往g節點那條路徑最短?廣度優先搜尋通過不斷...

菜鳥學演算法之 樹結構

文章出處 作者 李少傑 一 樹的結構 現在通用的說法都是一棵倒著的樹,而我感覺這種結構更像樹根。二 邏輯結構 有兩種結構可以來表示樹 一種是陣列結構 另一種是鍊錶結構 三 不同儲存結構的比較 1.雙親結點指標結構。此結構就是上圖所示的結構,此結構最的問題就是不容易知道乙個結點的子結點數目,如果想知道...