排序 8 之基數排序的C語言實現

2021-08-14 19:59:10 字數 1158 閱讀 9533

基數排序(radix sorting)是一種借助多關鍵字排序的思想對單邏輯關鍵字進行關係的方法。基數排序不需要進行記錄關鍵字間的比較。

主要分為兩個過程:

(1)分配,先從個位開始,根據位值(0-9)分別放到0~9號桶中(比如53,個位為3,則放入3號桶中)

(2)收集,再將放置在0~9號桶中的資料按順序放到陣列中

基數排序的特點:

穩 定 性:穩定

時間複雜度:o(kn)(k表示整形的最高位)

空間複雜度:o(10n)

舉例排序過程:

對 23, 12, 15, 108, 4,5 進行基數排序

1、對個位進行排序

12,23,4,5,15,108

2、對十位進行排序

108,4,5,12,15,23

3、對百位進行排序

4,5,12,15,23, 108

**:

#include 

#include

void radixcountsort(int

*index,int

*a,int len)

for(i=0;iindex[i]] ++;

} for(i=1;i<10;i++)

int*sort=(int

*)malloc(sizeof(int)*len);

for(i=len-1;i>=0;i--)

for(i=0;isort[i];

} free(sort);

free(count);

} void radixsort(int

*a,int len)

} radixcountsort(radix,a,len);

} free(radix);

} int main()

; len =sizeof(a) / sizeof(int);

radixsort(a,len);

for(i=0;iprintf("%d ",a[i]);

} printf("\n");

return

0;

}

用C語言實現簡單的基數排序

八大排序演算法有 氣泡排序 插入排序 選擇排序 快速排序 希爾排序 堆排序 歸併排序 基數排序。前面七種網上都有很多例子,但是最後一種基數排序卻很少看到,所以我總結了一下,並且自己寫了乙個簡單的實現。基數排序是一種分配排序,其基本思想是 排序過程無須比較關鍵字,而是通過 分配 和 收集 過程來實現排...

資料結構 C語言實現排序演算法 基數排序

基數排序 借助多關鍵字排序的思想對單邏輯關鍵字進行排序的方法。演算法實現的思想如圖 演算法的實現 先統計數字的位數,記為n 每次陣列值除10 n得到的結果,就將該數值放在該結果上 對所有資料做同樣的操作,然後n 1 讀資料放進陣列中,從小往大讀,該位置若有多個資料,讀取的時候按照先進先出的原則 重複...

c 實現基數排序

以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...