基數排序(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,...