Pagini recente » Cod sursa (job #2496271) | Cod sursa (job #1775705) | Cod sursa (job #1114919) | Cod sursa (job #791337) | Cod sursa (job #1128370)
#include <fstream>
using namespace std;
int N,v[10000010],aux[10000010],contor[130],index[130],bitmax=128;
void citire() {
ifstream in("radixsort.in");
int i,a,b,c;
in>>N>>a>>b>>c;
v[1]=b;
for(i=2;i<=N;i++)
v[i]=(v[i-1]*a+b)%c;
in.close();
}
void solve() {
int i,step;
for(step=0;step<=24;step+=8) {
for(i=1;i<bitmax;i++)
contor[i]=0;
for(i=1;i<=N;i++) {
aux[i]=v[i];
contor[ (aux[i]>>step) & (bitmax-1)]++;
}
index[0]=1;
for(i=1;i<bitmax;i++)
index[i]=index[i-1]+contor[i-1];
for(i=1;i<=N;i++)
v[ index[(aux[i]>>step)&(bitmax-1)]++ ]=aux[i];
}
}
void afisare() {
ofstream out("radixsort.out");
int i;
for(i=1;i<=N;i+=10)
out<<v[i]<<' ';
out<<'\n';
out.close();
}
int main () {
citire();
solve();
afisare();
return 0;
}