Pagini recente » Cod sursa (job #278689) | Cod sursa (job #479391) | Cod sursa (job #3036393) | Cod sursa (job #2035023) | Cod sursa (job #1022607)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int a[500001], nr[11];
int maxim (int x[], int n)
{
int i, mx;
mx=x[1];
for (i=2;i<=n;i++)
if (x[i]>mx)
mx=x[i];
return mx;
}
void cnt (int x[], int n, int c)
{
int aux[500001],i;
for (i=0;i<10;i++)
nr[i]=0;
for (i=1;i<=n;i++)
nr[(x[i]/c)%10]++;
for (i=1;i<10;i++)
nr[i]=nr[i]+nr[i-1];
for (i=n;i>=1;i--)
{
aux[nr[(x[i]/c)%10]]=x[i];
nr[(x[i]/c)%10]--;
}
for (i=1;i<=n;i++)
x[i]=aux[i];
}
void radixsort (int x[],int n)
{
int m,c;
m=maxim(x,n);
c=1;
while(m/c>0)
{
cnt(x,n,c);
c=c*10;
}
}
int main()
{
int n;
f>>n;
int i;
for (i=1;i<=n;i++)
f>>a[i];
radixsort(a,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();g.close();
return 0;
}