溫故知新-排序算法筆記

初級排序

選擇排序

不斷選擇剩餘元素的最小者算法

$O(N^2)$數組

插入排序

將後續元素插入到已經有序的元素適當的位置優化

$O(N^2)$code

希爾排序

每次對N有序子數組進行 插入排序 ,而後減小N,重複對有序子數組進行 插入排序,直到N爲1排序

對於中等數量級,一般只慢高級排序一點,實現簡單,適合嵌入式開發隊列

歸併排序

分治策略:先排序左半部分,再排序右半部分,最後合併,合併須要使用額外N控件的中間數組ip

$O(NlogN)$開發

快速排序

分治策略:將數組分爲三部分,比元素v小的元素,v元素,比v大的元素,能夠理解這是一種入座算法,經過不斷讓元素入座(同時保證左子樹都小於右子樹),實現總體數組有序。get

注意須要事先Shuffle,否則最多須要 $N^2/2$ 比較it

優化:熵最優(大量重複元素狀況),小數組使用插入排序,三取樣(切分數儘可能爲中位數)

優先隊列

適用於流式輸入,插入經過上浮,刪除經過下沉來實現有序

堆排序,先下沉後上浮

https://en.wikipedia.org/wiki/Sorting_algorithm

相關文章
相關標籤/搜索