Pagini recente » Cod sursa (job #201649) | Cod sursa (job #831949) | Cod sursa (job #954879) | Cod sursa (job #2131749) | Cod sursa (job #1315943)
#include <iostream>
#include<fstream>
using namespace std;
ofstream g("algsort.out");
#define maxn 500001
#define mod 4
#define maxp 31
int v[maxn], frecv[1<<mod];
int nr[maxn], n, sign=0;
void radixsort()
{
long long int p, cv, i;
//for (i=1;i<=n;i++) v[i]=i;
for (p=0;p<=maxp;p+=mod)
{
for (i=1;i<=n;i++)
frecv[(nr[i]/(1<<p))%(1<<mod)]++;
for (i=1;i<(1<<mod);i++)
frecv[i]+=frecv[i-1];
for (i=n;i>=1;i--)
{
cv=frecv[(nr[i]/(1<<p))%(1<<mod)]--;
//frecv[(nr[v[sign][i]]/(1<<p))%(1<<mod)]+1;
v[cv]=nr[i];
}
for (i=0;i<(1<<mod);i++) frecv[i]=0;
for (i=1;i<=n;i++) nr[i]=v[i];
}
}
int main()
{
ifstream f("algsort.in");
int i;
f>>n;
for (i=1;i<=n;i++) f>>nr[i];
radixsort();
for (i=1;i<=n;i++)
g<<nr[i]<<' ';
g<<'\n';
}