基數排序也是一種穩定排序演算法,且一般計數排序被用在基數排序過程中。
基數排序包括 lsd(least significant digital) 和 msd(least significant digital) 兩大類。
lsd 基數排序的思想非常直觀:假設乙個陣列的最高位有 d
dd 位,那麼依次從低位向高位處理,先排好個位,然後在排好個位的基礎上排十位,以此類推,直到遍歷完最高位次,排序結束。每一次都使用一種穩定排序演算法對該陣列進行排序。
上圖表示乙個由 7 個 3 位數組成的列表的基數排序。最左邊的一列是輸入資料,其餘各列顯示了由低到高位連續進行排序後列表的情況。陰影指出了進行排序的位。
引理:給定 n
nn 個最高位為 d
dd 的數,其中每乙個數字有 k
kk 個可能的取值。如果基數排序使用的穩定排序方法耗時 o(n
+k)o(n + k)
o(n+k)
,那麼它就可以在 o(d
(n+k
))o(d(n+k))
o(d(n+
k)) 時間內將這些數排序。
在下面的**中,我們假設 n
nn 個 d
dd 位的元素存放在陣列 a
aa 中,其中第一位是最低位,第 d
dd 位是最高位。
radix-sort(a, d)
排序演算法 基數排序
基數排序 思想 基數排序屬於 分配式排序 分為高位優先法msd和低位優先法lsd 低位優先法lsd 從最低位k0開始排序 對於排好的序列再用次低位k1排序 依次重複,直至對最高位kd 1排好序後,整個序列稱為有序的 這是乙個分 收 分 收 分 收的過程 特點 穩定 空間複雜度 o dn 時間複雜度 ...
排序演算法 基數排序
一 基數排序的思想 不直接比較數與數的大小。把待排序的整數按位分,分為個位,十位 從小到大依次將位數進行排序。實際上分為兩個過程 分配和收集。分配就是 從個位開始,按位數從小到大把資料排好,分別放進0 9這10個桶中 收集就是 依次將0 9桶中的資料放進陣列中 重複這兩個過程直到最高位 二 過程 比...
排序演算法 基數排序
基數排序稱桶排序。它按照記錄的各位值逐步進行排序。適用於整數型別的排序。基數排序不同於別的排序方法通過比較和交換來排序,它是通過按照桶來分配和收集的方法實現的。基本思想 假設待排序的記錄都是m位d進製 不足m位的高位補0 設定d個桶 0,1,d 1 首先將序列中的記錄按照最低位值的大小分配到各個桶中...