Pagini recente » Cod sursa (job #2840171) | Cod sursa (job #1540779) | Cod sursa (job #3255642) | Cod sursa (job #2504162) | Cod sursa (job #1021469)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
int N, a[500005];
void sort()
{
int b[500005], m=a[0], exp=1;
for (int i=1;i<N;++i)
{
if (a[i]>m)
m=a[i];
}
while (m/exp>0)
{
int bucket[10]={0}, cifra;
for (int i=0;i<N;++i)
{
cifra=(a[i]/exp)%10;
bucket[cifra]++;
}
for (int i=1;i<10;++i)
bucket[i]=bucket[i]+bucket[i-1];
for (int i=N-1;i>=0;--i)
{
cifra=(a[i]/exp)%10;
b[bucket[cifra]-1]=a[i];
bucket[cifra]--;
}
for (int i=0;i<N;++i)
a[i]=b[i];
exp=exp*10;
}
}
int main()
{
in>>N;
for (int i=0;i<N;++i)
in>>a[i];
sort();
for (int i=0;i<N;++i)
out<<a[i]<<" ";
return 0;
}