資料結構與演算法簡記 排序演算法 1

2022-06-30 14:09:12 字數 1383 閱讀 6109

最好情況,最壞情況,平均情況時間複雜度

時間複雜度的係數,常數,低階

比較次數和交換(或移動)次數

原地排序,空間複雜度o(1)

關注的是值相同的項,排序前後的先後順序是否不變,一致則表示是穩定演算法

排序演算法動畫演示:

插入排序比氣泡排序高效--氣泡排序的資料交換有三個操作,插入排序資料移動只有乙個操作,也就是複雜度係數低

排序演算法

是否穩定

是否原地排序

最好情況

最壞情況

平均情況

氣泡排序是是

o(n)

o(n2)

o(n2)

插入排序是是

o(n)

o(n2)

o(n2)

選擇排序否是

o(n2)

o(n2)

o(n2)

歸併排序

是否--o(n)

o(nlogn)

o(nlogn)

o(nlogn)

快速排序否是

分割過程:取陣列a中間位置,分成兩部分,對兩部分分別排序,遞迴處理直到不能再分割。

合併過程--將兩個有序部分進行合併:從頭遍歷每次取兩部分頭部的較小值放入新的陣列,直到乙個陣列結束,將另乙個陣列的剩餘部分移入新陣列末尾,合併完成則排序完成。

偽**

//

歸併排序演算法, a是陣列,n表示陣列大小

merge_sort(a, n)

//遞迴呼叫函式

merge_sort_c(a, p, r)

merge(a[p...r], a[p...q], a[q+1

...r]) else

} //

判斷哪個子陣列中有剩餘的資料

var start := i,end :=q

if j<=r then start := j, end:=r

//將剩餘的資料拷貝到臨時陣列tmp

while start <= end do

//將tmp中的陣列拷貝回a[p...r]

for i:=0 to r-p do

}

利用快排思想查詢第k大元素:先按快排分割槽,比較k與中位數的"下標index+1",k==index+1,則中位數就是第k大元素,kindex+1則在右邊,對所在邊遞迴執行上述步驟,直到找到該元素。

資料結構與演算法簡記 排序演算法 2 線性排序

桶排序 將要排序的資料分到幾個有序的桶裡,每個桶裡的資料再單獨進行排序 桶內使用歸併排序保證穩定性 再把每個桶裡的資料按照順序依次取出 計數排序 獲取資料項大小範圍,設定 範圍大小 1 個桶,n個桶只代表0 n 1個數字,分別對值為每個桶代表的數字的資料項計數,放入對應桶,再對桶順序求和放入桶,最後...

資料結構與演算法簡記 雜湊演算法

將任意長度的二進位制值串對映為固定長度的二進位制值串,這個對映的規則就是雜湊演算法。而通過原始資料對映之後得到的二進位制值串就是雜湊值。md5 md5 message digest algorithm,md5 訊息摘要演算法 sha secure hash algorithm,安全雜湊演算法 借助h...

資料結構與演算法簡記 貪心演算法

第一步,當我們看到這類問題的時候,首先要聯想到貪心演算法 針對一組資料,我們定義了限制值和期望值,希望從中選出幾個資料,在滿足限制值的情況下,期望值最大。第二步,我們嘗試看下這個問題是否可以用貪心演算法解決 每次選擇當前情況下,在對限制值同等貢獻量的情況下,對期望值貢獻最大的資料。第三步,我們舉幾個...