這個是二進位制版本的基數排序,輸出成bitset方便觀察這個過程會好一些。這個maxk不太清楚應該是怎麼樣做的,到時候具體分析移位之後的結果比較好。目前看來應該是取最高有效二進位制位。在呼叫的時候和普通的sort一樣呼叫就可以了。但實際上下面的好像有多餘的拷貝操作,要是滾動兩個陣列,或許可以省掉,不過這樣要考慮排序次數的奇偶性,一定意義上得不償失。在排序次數恰好為偶數(maxk是k的偶數倍)的時候可以考慮卡掉這個常數。
#includeusing namespace std;
typedef long long ll;
typedef unsigned int uint;
const int maxk = 32;
const int k = 4;
const int base = 1 << k;
const uint basemo = base - 1;
int base[base];
uint a[105];
uint tmp[105];
void radix_sort(uint *pb, uint *pe)
for(int i = 0; i < n; ++i)
cout << bitset<32>(pb[i]) << endl;
cout << endl;
}int main()
排序 基數排序
基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...
排序 基數排序
1 基數排序 桶排序 介紹 1 基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用 2 基數排序法是屬於穩定性的排序,基數...
桶排序 基數排序 計數基數排序 Java
前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...