例如有一樣本[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.雙親結點指標結構。此結構就是上圖所示的結構,此結構最的問題就是不容易知道乙個結點的子結點數目,如果想知道...