基于队列的基数排序(C++实现)

请先引入头文件 < 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();//删除第一个元素
            }
        }
    }

}

发布了33 篇原创文章 · 获赞 27 · 访问量 74

猜你喜欢

转载自blog.csdn.net/weixin_46165788/article/details/105532479