Pagini recente » Cod sursa (job #713125) | Cod sursa (job #2534564) | Cod sursa (job #244068) | Cod sursa (job #1633155) | Cod sursa (job #330751)
Cod sursa(job #330751)
#include<fstream>
#include<cstring>
#define maxn 500005
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[maxn],b[maxn],n,i;
void rad(int *a,int *b,int n,int byte)
{
int i,count[1024],ind[1024];
memset(count,0,sizeof(count));
for(i=1;i<=n;++i)
++count[(a[i]>>byte)&1023];
ind[0]=1;
for(i=1;i<1024;++i)
ind[i]=ind[i-1]+count[i-1];
for(i=1;i<=n;++i)
b[ind[(a[i]>>byte)&1023]++]=a[i];
}
void radix(int *a,int n)
{
rad(a,b,n,0);
rad(b,a,n,10);
rad(a,b,n,20);
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>a[i];
radix(a,n);
for(i=1;i<=n;++i)
g<<a[i]<<" ";
g<<"\n";
f.close();
g.close();
return 0;
}