1、lsd-最低位優先
//獲取資料中最大的位數(1)a為儲存資料的陣列。(2)為陣列的個數
int maxbit(int a,int num)
}return d;
}/*從低位開始桶排序*/
void lsd_radix_sort(int a,int num)
for(j=1;j<10;j++)
for(j=num-1;j >= 0;j--)//從後往前遍歷,為了保證較大資料在較小資料後面
for(j=0;j//將臨時資料賦給原陣列,一次迴圈結束
radix *= 10; //基數擴大十倍,即往高位進一位。
}//釋放
delete tmp;
delete count;
}
2、msd-最高位優先
/*從高位開始桶排序,(1)a表示陣列.(2)p表示當前的起始位置(3)所需排序的資料的數目(4)d表示位數*/
void msd_radix_sort(int a,int p,int num,int d)
for(i=p;i10;
count[k]++;
tempcount[k]++;
}for(i=1;i<10;i++)
for(i=p;i//將陣列按次序排好,存到tmp中
for(i=p;iint v = 0;
//對每個桶內的資料在進行下一輪的排序
for(i=0;i<10;i++)
}delete tmp;
delete count;
delete tempcount;
}
3、main函式:
void main()
; int count = sizeof(a) / sizeof(a[0]);
lsd_radix_sort(a,count);
//int d = maxbit(a,count);
//msd_radix_sort(a,0,count,d);
for(int i=0;icout
<" ";
}cout
<}
c 實現基數排序
以下介紹內容 百科 基數排序的方式可以採用lsd least significant digital 或msd most significant digital lsd的排序方式由鍵值的最右邊開始,而msd則相反,由鍵值的最左邊開始。以lsd為例,假設原來有一串數值如下所示 73,22,93,43,...
基數排序 佇列實現
基數排序是一種不需要比較就能實現排序的演算法思維,主要步驟為分配和收集的過程,重複這個過程於最大數的位數後,排序結束。以下是完全以佇列模擬桶的分配收集過程。標頭檔案 單鏈表部分 typedef int elemtype typedef struct lnode lnode,linklist int ...
python 實現基數排序
由桶排序改進來的 從最低位到最高位依次桶排序 最後輸出最後排好的列表 def radixsort list,d for k in range d d輪排序 每一輪生成10個列表 s for i in range 10 因為每一位數字都是0 9,故建立10個桶 for i in list 按第k位放入...