Pagini recente » Cod sursa (job #988531) | Cod sursa (job #1610086) | Cod sursa (job #2850431) | Clasament lasm-bataj2-10 | Cod sursa (job #2275308)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500002], w[500002], n, counter[260], index[260];
void countsort(int x)
{
int radix=255;
int octet=x*8, i, aux;
for (i=0;i<=255;i++)
counter[i]=0;
for (i=0;i<n;i++)
counter[(v[i]>>octet)&radix]++;
index[0]=0;
for (i=1;i<=255;i++)
index[i]=index[i-1]+counter[i-1];
for (i=0;i<n;i++)
{
aux=(v[i] >> octet) & radix;
w[index[aux]++] = v[i];
}
for (i=0;i<n;i++)
v[i]=w[i];
}
void radixsort()
{
int i;
for (i=0; i<4; i++)
countsort(i);
}
int main()
{
int i;
f>>n;
for (i=0;i<n;i++)
f>>v[i];
radixsort();
for (i=0;i<n;i++)
g<<v[i]<<" ";
return 0;
}