Pagini recente » Cod sursa (job #1480055) | Cod sursa (job #2736088) | Cod sursa (job #1396473) | Cod sursa (job #1415119) | Cod sursa (job #1876309)
#include <fstream>
#define PT(a,m,n) for(int a=m;a<=n;a++)
#define SW(v,b,e,I) for(int i=b;i<=e;i+=I){out<<v[i]<<' ';}
using namespace std;
ifstream in ("radixsort.in");
ofstream out ("radixsort.out");
const int bucket=8,lim=(1<<8)-1;
const int NMax= 10000005;
int n,a,b,c;
int vaz[lim+1],v[NMax],temp[NMax];
int get_rest(int nr,int ind)
{
return lim&(nr>>(ind*bucket));
}
void SolveStepArg(int arg)
{
PT(i,0,lim)
{
vaz[i]-0;
}
PT(i,1,n)
{
vaz[get_rest(v[i],arg)]++;
}
PT(i,1,lim)
{
vaz[i]+=vaz[i-1];
}
for(int i=n;i>0;i--)
{
temp[vaz[get_rest(v[i],arg)]]=v[i];
vaz[get_rest(v[i],arg)]--;
}
PT(i,1,n)
{
v[i]=temp[i];
}
}
void Read()
{
in>>n>>a>>b>>c;
}
void Solve()
{
PT(i,0,(32/bucket)-1)
SolveStepArg(i);
}
void Print()
{
SW(v,1,n,10)
}
int main()
{
Read();
Solve();
Print();
}