/*
Author:Albert Tesla Wizard
Time:2020/11/24
*/
#include<bits/stdc++.h>
using namespace std;
int Maxbit(int A[],int n)
{
int maxvalue=*max_element(A,A+n),digits=0;
while(maxvalue)
{
maxvalue/=10;
digits++;
}
return digits;
}
int Bitnumber(int x,int bit)
{
int temp=1;
for(int i=1;i<=bit-1;i++)temp*=10;
return (x/temp)%10;
}
void RadixSort(int A[],int n)
{
int maxbit=Maxbit(A,n);
int** B=new int*[10];
for(int i=0;i<10;i++)B[i]=new int[n+1];
for(int i=0;i<10;i++)B[i][0]=0;
for(int bit=1;bit<=maxbit;bit++)
{
for(int j=0;j<n;j++)
{
int num=Bitnumber(A[j],bit);
int index=++B[num][0];
B[num][index]=A[j];
}
for(int i=0,j=0;i<10;i++)
{
for(int k=1;k<=B[i][0];k++)A[j++]=B[i][k];
B[i][0]=0;
}
}
for(int i=0;i<10;i++)delete []B[i];
delete []B;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int A[10]={87,86,85,95,81,84,72,75,92,69};
RadixSort(A,10);
for(int i=0;i<10;i++)cout<<A[i]<<" ";
cout<<'\n';
return 0;
}
05-24
1029
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)