Pagini recente » Cod sursa (job #2032324) | Cod sursa (job #2856197) | Cod sursa (job #2900874) | Cod sursa (job #1105115) | Cod sursa (job #661729)
Cod sursa(job #661729)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int maxn=500001;
vector <vector <int> > bucket;
int a[maxn],n,nrcifre;
void begin()
{
f>>n;
int max=0;
for(int i=1;i<=n;i++)
{
f>>a[i];
if(a[i]>max) max=a[i];
}
while(max)
{
nrcifre++;
max/=10;
}
}
void radixsort()
{
int aux,p,q=1;
for(int i=1;i<=nrcifre;i++)
{
p=1;
for(int j=1;j<=n;j++)
{
aux=a[j]/q%10;
bucket[aux].push_back(a[j]);
}
for(int k=0;k<10;k++)
{
for(int j=0;j<bucket[k].size();j++)
{
a[p]=bucket[k][j];
p++;
}
bucket[k].clear();
}
q*=10;
}
bucket.clear();
}
void print ()
{
for(int i=1;i<=n;i++)
g<<a[i]<<" ";
}
int main()
{
bucket.resize(10);
begin();
radixsort();
print();
return 0;
}