1. 程式人生 > 其它 >排序演算法——基數排序簡介

排序演算法——基數排序簡介

技術標籤:排序演算法排序演算法

基數排序

基數排序也是一種穩定排序演算法,且一般計數排序被用在基數排序過程中。
基數排序包括 LSD(Least significant digital)MSD(Least significant digital) 兩大類。

LSD 基數排序的思想非常直觀:假設一個數組的最高位有 d d d 位,那麼依次從低位向高位處理,先排好個位,然後在排好個位的基礎上排十位,以此類推,直到遍歷完最高位次,排序結束。每一次都使用一種穩定排序演算法對該陣列進行排序。

在這裡插入圖片描述

上圖表示一個由 7 個 3 位陣列成的列表的基數排序。最左邊的一列是輸入資料,其餘各列顯示了由低到高位連續進行排序後列表的情況。陰影指出了進行排序的位。

引理:給定 n n n 個最高位為 d d d 的數,其中每一個數位有 k k k 個可能的取值。如果基數排序使用的穩定排序方法耗時 O ( n + k ) O(n + k) O(n+k),那麼它就可以在 O ( d ( n + k ) ) O(d(n+k)) O(d(n+k)) 時間內將這些數排序。

在下面的程式碼中,我們假設 n n n d d d 位的元素存放在陣列 A A A 中,其中第一位是最低位,第 d d d 位是最高位。

Radix-Sort(A, d) {
    for i=1 to d
        use a stable sort to sort array A on digit i
}