Pagini recente » Cod sursa (job #2892613) | Cod sursa (job #2284616) | Cod sursa (job #2177813) | Cod sursa (job #1526068) | Cod sursa (job #1547343)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("radixsort.in");
ofstream g("radixsort.out");
#define COUNT_N 256
#define BYTE 8
#define N_MAX 1000000
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 n,a,b,c,v[100],i;
f>>n>>a>>b>>c;
for(i=1;i<=n;i++)
{
if(i==1)
v[i]=b;
else
v[i]=(a*v[i-1]+b)%c;
}
radix(v,n);
for(i=1;i<=n;i=i+10)
g<<v[i]<<" ";
}