在我的博文《「主宰世界」的10種演算法短評》中給出的首個演算法就是高效的排序演算法。本文將對排序演算法做乙個全面的梳理,從最簡單的「冒泡」到高效的堆排序等。分類
如果在物件序列中有兩個物件r[
i]和r[j
] ,它們的排序碼k[
i]==k
[j] 。如果排序前後,物件r[
i]和r[j
] 的相對位置不變,則稱排序演算法是穩定的;否則排序演算法是不穩定的。
時間開銷
空間開銷
演算法執行時所需的附加儲存。
建立一堆buckets;
遍歷原始陣列,並將資料放入到各自的buckets當中;
對非空的buckets進行排序;
按照順序遍歷這些buckets並放回到原始陣列中即可構成排序後的陣列。
0;}輸出為:
initial array
29 25 3 49 9 37 21 43
-------------
bucket[0] : 9 3
bucket[1] :
bucket[2] : 21 25 29
bucket[3] : 37
bucket[4] : 43 49
-------------
bucktets after sorted
bucket[0] : 3 9
bucket[1] :
bucket[2] : 21 25 29
bucket[3] : 37
bucket[4] : 43 49
-------------
sorted array
3 9 21 25 29 37 43 49
雖然程式中的bucket採用鍊錶結構以充分利用空間資源,而且bucket的構造也很巧妙,做的資料結構類似於棧鍊錶的形式,插入都是插到頂部,所以後遍歷的資料總是會在上面,因此從放入bucket之後的輸出可以看出,跟圖示進行對比,發現確實跟原來的原始相對順序相反。
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不...
排序演算法 桶排序
2009 12 02 12 01 2817人閱讀 桶排序 bucket sort 或所謂的箱排序,是乙個排序演算法,工作的原理是將陣列分到有限數量的桶子裡。每個桶子再個別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均...
排序演算法 桶排序
桶排序 bucket sort 或所謂的箱排序的原理是將陣列分到有限數量的桶子裡,然後對每個桶子再分別排序 有可能再使用別的排序演算法或是以遞迴方式繼續使用桶排序進行排序 最後將各個桶中的資料有序的合併起來。排序過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 ...