Pagini recente » Cod sursa (job #2457044) | Monitorul de evaluare | Cod sursa (job #2935840) | Cod sursa (job #2235503) | Cod sursa (job #1315445)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500005],n;
void countsort(int n, int exp)
{
int aux[n];
int i, c[10]={0};
for (i=0;i<n;i++)
c[(a[i]/exp)%10]++;
for (i=1;i<10;i++)
c[i]+=c[i-1];
for (i=n-1;i>=0;i--)
{
aux[c[(a[i]/exp)%10]-1]=a[i];
c[(a[i]/exp)%10]--;
}
for (i=0;i<n;i++)
a[i]=aux[i];
}
void radixsort(int n)
{
int m=0;
for(int i=0;i<n;i++)
if(a[i]>m)
m=a[i];
int exp=1;
while(exp<=m)
{
countsort(n, exp);
exp*=10;
}
}
int main()
{
f>>n;
for(int i=0;i<n;i++)
f>>a[i];
radixsort(n);
for(int i=0;i<n;i++)
g<<a[i]<<' ';
f.close();g.close();
return 0;
}