基數排序(radix sort)

2021-08-20 04:09:43 字數 763 閱讀 3459

基數排序的發明可以追溯到2023年赫爾曼何樂禮在打孔卡片製表機上的貢獻。

實現原理:將所有待比較的正整數統一為同樣的數字長度,數字較短的數前面補零。然後,從最低位開始進行基數字10的計數排序,一直到最高位計數排序完後,數列就變成了乙個有序數列(利用了計數排序的穩定性)

#include#includeusing namespace std;

const int maxn=100;

const int base=15;

const int dn=3;

int n,s[maxn],b[maxn],c[maxn];

int getdigit(int i,int d)

; return (s[i]/radix[d])%10;

}void countingsort(int d)

for(int i=0;i基數排序的複雜度是o(n*dn),其中n是待排序元素的個數,dn是數字位數。這個時間複雜度不一定優於o(nlogn),dn的大小取決於數字的選擇,和待排序資料所屬資料型別的全集的大小。

如果考慮和比較排序進行對照,基數排序的形式複雜度雖然不一定更小,但由於不進行比較,因此其基本操作的代價更小,所以基數排序一般要快於基於比較的排序,比如快速排序。由於整數也可以表達字串(比如名字或日期)和特定的浮點數,所以基數排序並不是只能用於整數排序。

基數排序 RadixSort

基數排序 以整形為例 將整形10進製按每位拆分,然後從低位到高位依次比較各個位。主要分為兩個過程 1 分配,先從個位開始,根據位值 0 9 分別放到0 9號桶中 比如53,個位為3,則放入3號桶中 2 收集,再將放置在0 9號桶中的資料按順序放到陣列中 重複 1 2 過程,從個位到最高位 比如32位...

Radix sort 基數排序

有關 gpu並行程式設計 英文 cuda programming a developer s guide to parallel computing with gpus 第六章 中基數排序,其中並行排序的多執行緒排序,由於沒有具體較為詳細的介紹,對於初次接觸多執行緒的人略微困難。本文較為詳細的介紹此...

基數排序 Radix Sort

基數排序是在某種情況下比快速排序還快的排序.當然了,計數排序 counting sort 也有可能比快速排序快.計數排序非常容易理解,時間複雜度是o max a i 如果資料範圍很小的話,計數排序有巨大優勢.而基數排序,則更進一步,對每一位進行計數排序.這樣時間複雜度降為o n log max a ...