Pagini recente » Cod sursa (job #2266544) | Cod sursa (job #3280014) | Cod sursa (job #2086989) | Cod sursa (job #797844) | Cod sursa (job #1081444)
#include <fstream>
#include <string.h>
using namespace std;
#define COUNT_N 256
#define BYTE 8
#define N_MAX 500004
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int a[N_MAX],b[N_MAX],count[COUNT_N],ind[COUNT_N];
void rad(int *a,int *b,int byte,int n)
{
memset(count,0,sizeof(count));
int i,Lm = COUNT_N - 1;
for(i = 0; i < n; ++i)
++count[(a[i]>>byte)&Lm];
for(i = 0;i < COUNT_N; ++i)
ind[i] = ind[i-1] + count[i-1];
for(i = 0; i < n; ++i)
b[ind[(a[i]>>byte)&Lm]++] = a[i];
}
void radix(int *a,int n)
{
rad(a,b,0 ,n);
rad(b,a, BYTE,n);
rad(a,b,2*BYTE,n);
rad(b,a,3*BYTE,n);
}
int main()
{
int a[N_MAX],i,n;
cin>>n;
for(i=0; i<n; i++)
cin>>a[i];
radix(a, n);
for(i=0; i<n; i++)
cout<<a[i];
return 0;
}