演算法名稱:
基數排序
[msd
最高位優先
]robert
基本思路:
利用每個元素的本身自帶的資訊,優先比較位數靠後的大小,直到比較整個位數。
實現步驟:
設定比較的幾個梯度
[通常是
10進製
],先按最低的[個位
]進行排序後順序鏈結,然後把處理過後的按第二位比較[十位
]進行排序,以此類推即可將所有數字排序。
模板
:
1 inline int maxbit(inta)7view code8int d=maxbit(a);
9for(int k=1,p=1;k<=d;k++,p*=10
)
正確性
:因為第一次使得個位大小從小到大,然後在保證個位從小到大的時候將十位數排序,這樣就使得如果只看後兩位數,十位數相同的數會依據個位數的大小自動的分好。以此類推,就滿足從高位到低位都是有序的,並優先高位【表現在逆過程中】。
時空複雜度:
大概是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,以個位數數字為桶編號依次入...