Pagini recente » Cod sursa (job #2172944) | Cod sursa (job #2051424) | Statistici Vlad Istratescu (vladistr08) | Cod sursa (job #635091) | Cod sursa (job #2077396)
#include <stdio.h>
#include <string.h>
using namespace std;
FILE* fin;
FILE* fout;
int n;
unsigned int V[500000];
unsigned int result[500000];
unsigned int C[256];
unsigned int O[256];
void radixSort(unsigned int v[], int n, int byte)
{
for(int i = 0; i < n; ++i)
C[(v[i] & (0xFF << byte)) >> byte]++;
for(int i = 1; i < 256; ++i)
C[i] += C[i - 1];
for(int i = n - 1; i >= 0; --i)
{
result[C[(v[i] & (0xFF << byte)) >> byte] - 1] = v[i];
C[(v[i] & (0xFF << byte)) >> byte]--;
}
memcpy(v, result, sizeof(unsigned int) * n);
memset(C, 0, sizeof(unsigned int) * 256);
}
int main()
{
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
for(int i = 0; i < n; ++i)
fscanf(fin, "%u", V + i);
for(int i = 0; i <= 24; i += 8)
radixSort(V, n, i);
for(int i = 0; i < n; ++i)
fprintf(fout, "%d ", V[i]);
return 0;
}