基數排序 演算法

2022-06-01 10:12:09 字數 806 閱讀 3740

演算法名稱:

基數排序

[msd

最高位優先

]robert

基本思路:

利用每個元素的本身自帶的資訊,優先比較位數靠後的大小,直到比較整個位數。

實現步驟:

設定比較的幾個梯度

[通常是

10進製

],先按最低的[個位

]進行排序後順序鏈結,然後把處理過後的按第二位比較[十位

]進行排序,以此類推即可將所有數字排序。

模板

1 inline int maxbit(inta)7

8int d=maxbit(a);

9for(int k=1,p=1;k<=d;k++,p*=10

)

view code

正確性

:因為第一次使得個位大小從小到大,然後在保證個位從小到大的時候將十位數排序,這樣就使得如果只看後兩位數,十位數相同的數會依據個位數的大小自動的分好。以此類推,就滿足從高位到低位都是有序的,並優先高位【表現在逆過程中】。

時空複雜度:

大概是o(n*d)

,但是因為運用除法所以常數大一些。

主要用途:

1.基數排序是穩定的排序,同時也是穩定排序中比較快的,可以用於要求穩定排序的排序題中。

2.字尾陣列的字尾排序可以使用以

asc碼為進製的基數排序

基數排序演算法

include stdafx.h include iostream include math.h using namespace std struct radixsort 建立迴圈鍊錶 radixsort creatlink else le ls ls new radixsort 為下乙個節點在堆記...

基數排序演算法

以下內容為程式 int quicksort int p,int n extern int insertsort int p,int n static int partition int p,int n,int m static int quick sort int p,int n 快速排序演算法在 ...

基數排序演算法

經典排序演算法 基數排序radix sort 原理類似桶排序,這裡總是需要10個桶,多次使用 首先以個位數的值進行裝桶,即個位數為1則放入1號桶,為9則放入9號桶,暫時忽視十位數 例如 待排序陣列 62,14,59,88,16 簡單點五個數字 分配10個桶,桶編號為0 9,以個位數數字為桶編號依次入...