#include <iostream>
#include <queue>
using namespace std;
int Radix(int k, int p)
//求出每个数据的第pass位数字
{
int power, i;
power = 1;
for(i = 1; i <= p-1; i++)
{
power = power*10;
}
return ( ( k%(power*10) )/power );
}
void RadixSort(int figure, queue<int> Q[], queue<int> A)
//参数figure表示整型关键字中数字的位数,A表示全部被排序的数据
{
int pass, r, i;
int data;
for(pass = 1; pass <= figure; pass++)
{
//for(i = 0; i <= 9; i++)
while( !A.empty() )
{
data = A.front();
A.pop();
r = Radix(data, pass);
Q[r].push(data);
}
for( i = 0; i <= 9; i++)
{
while(!Q[i].empty())
{
data = Q[i].front();
Q[i].pop();
A.push(data);
}
}
}
}
[数据结构] 基数排序算法
最新推荐文章于 2021-01-16 15:14:16 发布