Pagini recente » Cod sursa (job #2017258) | Cod sursa (job #1120889) | Cod sursa (job #592807) | Cod sursa (job #2783105) | Cod sursa (job #1004953)
#include <cstdio>
#include <vector>
#define N 500005
using namespace std;
vector <int> b[10];
vector <int>::iterator it;
int n,a[N],maxa;
inline int max(int x,int y){ if(x>y)return x; else return y; return 0; }
void read() { freopen("algsort.in","r",stdin); scanf("%d\n",&n); for(int i=1;i<=n;++i){ scanf("%d ",&a[i]); maxa=max(maxa,a[i]); } fclose(stdin); }
void write(){ freopen("algsort.out","w",stdout); for(int i=1;i<=n;++i)printf("%d ",a[i]); fclose(stdout); }
void lsd_radixsort()
{
int exp=1,k,i;
while(maxa>exp)
{
for(i=1;i<=n;++i)b[a[i]/exp%10].push_back(a[i]);
k=0;
for(i=0;i<10;++i)
{
for(it=b[i].begin();it!=b[i].end();++it)
a[++k]=*it;
b[i].clear();
}
exp*=10;
}
}
int main()
{
read();
lsd_radixsort();
write();
return 0;
}