Pagini recente » Cod sursa (job #576179) | Cod sursa (job #2459139) | Cod sursa (job #2531010) | Cod sursa (job #3192601) | Cod sursa (job #1398260)
#include <iostream>
#include<fstream>
using namespace std;
ofstream g("radixsort.out");
#define maxn 10000002
#define mod 2
#define maxp 24
#define baza 1<<2
int fr[baza];
int nr[maxn], old[maxn], n;
void radixsort()
{
int p, cv, i;
for (p=0;p<=maxp;p+=mod)
{
for (i=1;i<=n;i++)
{
fr[(nr[i]>>p)% baza]++;
old[i]=nr[i];
}
for (i=1;i<baza;i++)
fr[i]+=fr[i-1];
for (i=n;i>=1;i--)
{
nr[fr[(old[i]>>p)&(baza-1)]]=old[i];
fr[(old[i]>>p)&(baza-1)]--;
}
for (i=0;i<baza;i++) fr[i]=0;
}
}
int main()
{
ifstream f("radixsort.in");
int i, cv, a, b, c;
f>>n>>a>>b>>c;
nr[1]=b;
for (i=2;i<=n;i++) nr[i]=(a*nr[i-1]+b)%c;
radixsort();
for (i=1;i<=n;i+=1)
g<<nr[i]<<' ';
g<<'\n';
}