選擇排序
遍歷陣列,找出最小的值對應的順序,並把它新增到乙個新的陣列中,時間複雜程度o(n**2)
**示例如下
def
find_samll
(data)
:"定義查詢陣列中最小的值"
small_index =
0 small_value = data[0]
for i in
range
(len
(data)-1
):if data[i]
>data[i+1]
: small_index = i+
1 small_value = data[i+1]
return small_index
defsort_data
(data)
: new_array =
for i in
range
(len
(data)):
small = find_samll(data)
)return new_array
氣泡排序
從陣列的0每次比較相鄰的兩個元素,他們如果順序錯誤就把他們換過來,時間複雜程度o(n**2)
data =[8
,100,50
,22,15
,6,1
,1000
,999,0
]def
sort_mao
(data)
:for i in
range
(len
(data)-1
):#冒泡演算法核心:兩層迭代巢狀
for j in
range
(len
(data)
-i-1):
if data[j]
>data[j+1]
: data[j]
,data[j+1]
= data[j+1]
,data[j]
return data
快速排序
每次選擇乙個基準數,將大於該數的放在基準數右邊,小於該數的放在基準數左邊,通過遞迴的思想到最後完成排序。平均時間複雜程度o(n*logn)
if
len(data)
>=2:
temp = data[0]
arr_left =
arr_right =
for i in data[1:
]:if i >= temp:
else
:return quick_sort(arr_left)
+[temp]
+quick_sort(arr_right)
else
:return data
演算法基礎之排序 快速排序
上一節簡單介紹了一下常用的插入排序,這一節,我們來看看實際中針對大量資料最常用的快速排序演算法。快速排序演算法採用的是一種分治的策略,其的特點就是。快!演算法的平均時間複雜度為o nlog n 快速排序演算法處理公升序排序的思路大致如下 1 選中待排序陣列中最左端的數為參考數 2 從陣列的右端開始向...
基礎排序演算法之氣泡排序
1.主體 兩個迴圈 2.時間複雜度 o n 2 3.過程 對於公升序,比較相鄰兩個數,如果第二個數小,則交換位置 從數列後往前比較,最終第乙個數是最小的 重複上述步驟 demo include includeusing namespace std 氣泡排序 void my swap int firs...
基礎排序演算法之快速排序
基礎思想 分治 選首元素作為key值,迴圈比較,比其小的元素放左側,比其大的放右側 分成的兩個數列,遞迴重複上述步驟 include includeusing namespace std 快速排序 時間複雜度 o n log n 從數列取乙個數作為key值 一般取第乙個數 i 從右邊遍歷找到第乙個比...