排序演算法 基數排序

2021-09-11 01:13:14 字數 1105 閱讀 3595

基數排序稱桶排序。它按照記錄的各位值逐步進行排序。適用於整數型別的排序。基數排序不同於別的排序方法通過比較和交換來排序,它是通過按照桶分配收集的方法實現的。

基本思想:假設待排序的記錄都是m位d進製(不足m位的高位補0)。設定d個桶(0,1,...,d-1)。首先將序列中的記錄按照最低位值的大小分配到各個桶中,然後按照桶號的大小收集記錄,如果乙個桶內有多個記錄,按照進桶的先後順序收集,形成乙個新的記錄序列。這樣就完成了一次基數排序。類似的,將新的序列再按照次低位的值進行分配和收集,直到按最高位的值分配收集完畢後,得到的序列就是排好序的序列。

排序過程圖示:

實現:桶排序實現的難點在於桶結構的實現。通常有兩種方式,一種是二維陣列,另一種是鏈式儲存結構。

c++**(二維陣列實現桶結構):

#includeusing namespace std;

/*基數排序(桶排序)

*/int * radixsort(int a, int n, int d)

k = 1;//記錄桶排序的輪次數

power = 1;

while (k <= d)

else

//每次分配前先把桶清空

for(i = 0; i < 10; i++)

//按相應位的值將記錄分配到各個桶中,再按桶收集

for (i = 0; i < n; i++)

//收集

number = 0;

for (h = 0; h < 10; h++) {

if (c[h] != 0) {

for(j=0;j基數排序的時間複雜度:ο(d(r+n))

空間複雜度:ο(rd+n)

其中r表示記錄的基數(比如十進位制數進行排序時基數為10,十六進製制進行排序時基數為16),d表示記錄的位數,n表示序列的長度。

十大排序演算法對比與總結

排序演算法 基數排序

基數排序 思想 基數排序屬於 分配式排序 分為高位優先法msd和低位優先法lsd 低位優先法lsd 從最低位k0開始排序 對於排好的序列再用次低位k1排序 依次重複,直至對最高位kd 1排好序後,整個序列稱為有序的 這是乙個分 收 分 收 分 收的過程 特點 穩定 空間複雜度 o dn 時間複雜度 ...

排序演算法 基數排序

一 基數排序的思想 不直接比較數與數的大小。把待排序的整數按位分,分為個位,十位 從小到大依次將位數進行排序。實際上分為兩個過程 分配和收集。分配就是 從個位開始,按位數從小到大把資料排好,分別放進0 9這10個桶中 收集就是 依次將0 9桶中的資料放進陣列中 重複這兩個過程直到最高位 二 過程 比...

排序演算法 基數排序

一 基數排序 1 介紹。基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用,基數排序法是屬於穩定性的排序,其時間複雜度為...