什麼是基數排序?

2021-10-08 22:14:10 字數 1172 閱讀 7138

基數排序(radix sort)是桶排序的擴充套件,它的基本思想是:將整數按位數切割成不同的數字,然後按每個位數分別比較。

具體做法是:將所有待比較數值統一為同樣的數字長度,數字較短的數前面補零。然後,從最低位開始,依次進行一次排序。這樣從最低位排序一直到最高位排序完成以後, 數列就變成乙個有序序列。

通過基數排序對陣列,它的示意圖如下:

在上圖中,首先將所有待比較樹脂統一為統一位數長度,接著從最低位開始,依次進行排序。

按照個位數進行排序。

按照十位數進行排序。

按照百位數進行排序。

排序後,數列就變成了乙個有序序列。

#include using namespace std;

const int radix = 10;

int getdigitalcounts(int data)

return count;

}int getdigitalnuminpos(int data, int pos)

void radixsort(int data, int len)

//ge the max value digital counts

int digitalcounts = getdigitalcounts(max);

int* radixarrays[radix];

for(int i = 0; i < radix; i++)

for(int i = 0; i < digitalcounts; i++)

int index = 0;

//collect value from radix arrays to data

for(int k = 0; k < radix; k++)

radixarrays[k][0] = 0;}}

for(int i = 0; i < radix; i++)

}int main() ;

radixsort(arr, 10);

for(int i = 0; i < 10; i++)

cout << arr[i] << endl;

return 0;

}

什麼是基數排序?

資料結構與演算法 計數排序 在之前的部落格中,我介紹過一種非比較排序 計數排序。計數排序的原理很簡單,就是用乙個陣列來統計每種數字出現的次數,然後按照大小順序將其依次放回原陣列,達成排序的目的。但是計數排序有乙個很嚴重的問題,就是其只能對整數進行排序,一旦遇到字串時,就無能為力了。為了彌補上述的缺點...

動畫 什麼是基數排序?

基數排序和計數排序一樣無需進行比較和交換,和桶排序一樣利用分布和收集兩種基本操作進行排序。基數排序是把每乙個元素拆成多個關鍵字,乙個關鍵字可以在每乙個元素上同等的位置進行計數排序,乙個元素拆成多個關鍵字可以看作是要進行幾輪分桶,以乙個元素最長的長度為準。基數排序可以看成多 單 關鍵字的排序,可以想象...

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...