Pagini recente » Cod sursa (job #2866994) | Cod sursa (job #1094168) | Cod sursa (job #2530063) | Cod sursa (job #324767) | Cod sursa (job #1151981)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500000], n;
void radix();
int main()
{
in >> n;
for(int i=0;i<n;i++)
in >> v[i];
radix();
for(int i=0;i<n;i++)
out << v[i] << " ";
in.close();
out.close();
return 0;
}
void radix()
{
int bucket[10][500000], buck[10], p=1, num=0, large=v[0];
for(int i=1;i<n;i++)
{
if(v[i]>large)
large=v[i];
while(large)
{
num++;
large/=10;
}
}
for(int pas=0;pas<num;pas++)
{
for(int k=0;k<10;k++)
buck[k]=0;
for(int i=0;i<n;i++)
{
int l=(v[i]/p)%10;
bucket[l][buck[l]++]=v[i];
}
int i=0;
for(int k=0;k<10;k++)
for(int j=0;j<buck[k];j++)
v[i++]=bucket[k][j];
p*=10;
}
}