Pagini recente » Cod sursa (job #1260044) | Cod sursa (job #1845564) | Cod sursa (job #2045333) | Cod sursa (job #1071737) | Cod sursa (job #1026743)
#include <iostream>
#include <fstream>
using namespace std;
long nr[17];
long maxim(long x[],long n)
{
long i,maxi;
maxi=x[1];
for(i=2;i<=n;i++)
if(x[i]>maxi)
maxi=x[i];
return maxi;
}
void numara(long x[],long n, long cif)
{
long aux[1000000],i;
for(i=0;i<=15;i++)
nr[i]=0;
for(i=1;i<=n;i++)
nr[(x[i]/cif)&15]++;
for(i=1;i<=15;i++)
nr[i]=nr[i]+nr[i-1];
for(i=n;i>=1;i--)
{
aux[nr[(x[i]/cif)&15]]=x[i];
nr[(x[i]/cif)&15]--;
}
for(i=1;i<=n;i++)
x[i]=aux[i];
}
void radixsort(long x[],long n)
{
long m,cif,i;
m=maxim(x,n);
cif=1;
while(m/cif>0)
{
numara(x,n,cif);
cif=cif*10;
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
long n, x[1000000],i;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
radixsort(x,n);
for(i=1;i<=n;i++)
g<<x[i]<<" ";
f.close();
g.close();
return 0;
}