第一次接觸基數排序是在學習字尾陣列(有感興趣的可以看一下-->字尾陣列)的時候,感覺和桶排序很像,時間複雜度能達到
注:本文主要講述從小到大排序,從大到小排序與之類似,如果你真的理解了基數排序,不難實現從大到小排序
給定乙個需要進行排序的陣列a和十個桶(編號從0到9),對於陣列a中每個元素,先根據其個位數字將這個元素放到對應的桶中(即如果這個元素個位數字是a(a肯定滿足:
給定陣列:100、181、77、10、5、98、102、11、63
根據個位數進行排序:桶0
100、10
桶1181、11
桶2102
桶363
桶4桶55桶6
桶777
桶898
桶9排序後:100、10、181、11、102、63、5、77、98
根據十位數進行排序:桶0
100、102、5
桶110、11
桶2桶3
桶4桶5
桶663
桶777
桶8181
桶998
排序後:100、102、5、10、11、63、77、181、98
根據百位數進行排序:桶0
5、10、11、63、77、98
桶1100、102、181
桶2桶3
桶4桶5
桶6桶7
桶8桶9
排序後:5、10、11、63、77、98、100、102、181
此時排序結束,是不是很神奇,不知不覺就變成有序的了
#include using namespace std;
#define infy 0x3f3f3f3f
#define lowbit(x) (x&(-x))
#define e exp(1)
#define pi acos(-1)
typedef long long int ll;
const int maxn=1009;
int n,a[maxn];
int b[10];
void radix_sort(int a,int se)
}int main()
基數排序 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 ...