在計算機科學與數學中,一個排序演算法(Sorting algorithm)是一種能將一串資料依照特定排序方式的一種演算法。
最常用到的排序方式是數值順序以及字典順序。有效的排序演算法在一些演算法(例如搜尋演算法與合併演算法)中是重要的
,如此這些演算法才能得到正確解答。排序演算法也用在處理文字資料以及產生人類可讀的輸出結果。
在此將介紹幾種常見、常用的排序演算法以供參考。
主要討論時間及空間的複雜度:
依據串列(list)的大小(n),一般而言,好的表現是O(n log n),
且壞的表現是O(n2)。對於一個排序理想的表現是O(n)。僅使用一個抽象關鍵比較運算的排序演算法總平均上總是至少需要O(n log n)。
高等與低等排序也是依其Average Case下的時間複雜度而定義。
由資料量的多寡是否可一次全部載入記憶體來決定:
通常input data中常有多個相同鍵值存在。
ex:...,k,...,k*,...。
在經過sort之後,視其output結果,相同鍵值的值是否保持相同順序: