演算法基礎學習之排序

2021-09-28 23:46:54 字數 1463 閱讀 7780

選擇排序

遍歷陣列,找出最小的值對應的順序,並把它新增到乙個新的陣列中,時間複雜程度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 從右邊遍歷找到第乙個比...