Pagini recente » Cod sursa (job #752270) | Cod sursa (job #1061232) | Cod sursa (job #2955996) | Cod sursa (job #122654) | Cod sursa (job #1540800)
#include <fstream>
using namespace std;
int maxim(int a[], int n)
{
int maxi = a[0];
for (int i = 1; i < n; i++)
if (a[i] > maxi)
maxi = a[i];
return maxi;
}
void countSort(int a[], int n, int exp)
{
int output[n];
int i,v[10]= {0};
for (i=0; i<n; i++)
v[(a[i]/exp)%10]++;
for (i=1; i<10; i++)
v[i]+= v[i-1];
for (i=n-1; i>=0; i--)
{
output[v[(a[i]/exp)%10]-1]=a[i];
v[(a[i]/exp)%10]--;
}
for (i=0; i<n; i++)
a[i]=output[i];
}
void radixsort(int a[], int n)
{
int m = maxim(a, n);
for (int exp=1;m/exp>0;exp*=10)
countSort(a, n, exp);
}
int main()
{
ifstream f("radixsort.in");
ofstream g("radixsort.out");
int n,a,b,c,i,v[2000],aux;
f>>n>>a>>b>>c;
v[0]=b;
for(i=1;i<n;i++)
v[i]=(a*v[i-1]+b)%c;
radixsort(v,n);
for(i=0;i<n;i+=10)
g<<v[i]<<' ';
return 0;
}