Basics Sorting - 基礎排序演算法
演算法複習——排序
- 時間複雜度-執行時間(比較和交換次數)
- 空間複雜度-所消耗的額外記憶體空間
- 使用小堆疊、隊列或表
- 使用鏈表或指針、數組索引來代表數據
- 排序數據的副本
舉例來說,如果今天遇到一個題目,時間限制是1s,但僅有10^3筆輸入數據,此時即使使用O(n^2)的演算法也沒問題,但若有10^5筆輸入,則O(n^2)的演算法則非常可能超時,在實作前就要先思考是不是有O(n\log n)或更快的演算法。
穩定性:如果排序後文件中擁有相同鍵的項的相對位置不變,這種排序方式是穩定的。
- Bucket Sort
- Radix Sort
從穩定性角度考慮可分為如下兩類:
- 穩定
- 非穩定
Reference
- Sorting algorithm - Wikipedia, the free encyclopedia - 各類排序演算法的「平均、最好、最壞時間複雜度」總結。
- - 更清晰的總結
- 經典排序演算法總結與實現 | Jark’s Blog - 基於 Python 的較為清晰的總結。
- - 總結了一些常用常問的排序演算法。
- 雷克雅維克大學的程式競賽課程
第一講的slide中提供了演算法分析的經驗法則