请先引入头文件 < queue >.
void basesort(int a[],int n)//n个数基数排序
{
queue<int>q[10];//定义一个队列数组
int Max=a[0];
for(int i=1;i<n;i++)
Max=max(Max,a[i]);//取数数组中的最大值
int len = to_string(Max).length();//取最大值的位数
for(int i=0;i<len;i++)
{
int bit=(int)pow(10,i);//用于向高位移位
for(int j=0;j<n;j++)
{
q[a[j]/bit%10].push(a[j]);//根据元素的比较位加入相应的队列
}
int index=0;
for (int k = 0; k <10 ; ++k)
{
while(!q[k].empty())
{
a[index++]=q[k].front();//第一个元素出队
q[k].pop();//删除第一个元素
}
}
}
}