基數排序(Radix sort)

2021-08-28 08:57:40 字數 1150 閱讀 5105

第一次接觸基數排序是在學習字尾陣列(有感興趣的可以看一下-->字尾陣列)的時候,感覺和桶排序很像,時間複雜度能達到

注:本文主要講述從小到大排序,從大到小排序與之類似,如果你真的理解了基數排序,不難實現從大到小排序 

給定乙個需要進行排序的陣列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 ...