Pagini recente » Cod sursa (job #1060326) | Cod sursa (job #2614250) | Cod sursa (job #755435) | Cod sursa (job #2806346) | Cod sursa (job #522783)
Cod sursa(job #522783)
#include <stdio.h>
#include <stdlib.h>
void sort(int *array, int *temp, int size, int level) {
int *occ = (int*)calloc(256, sizeof(*occ));
int *index = (int*)calloc(256, sizeof(*index));
int i;
for (i = 0; i < size; ++i)
++occurences[(array[i] >> (level * 8)) & 255];
for (i = 1; i < 256; ++i)
index[i] = index[i - 1] + occurences[i - 1];
for (i = 0; i < size; ++i)
temp[index[(array[i] >> (level * 8)) & 255]++] = array[i];
if (level < 3)
sort(temp, array, size, level + 1);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int i, n;
scanf("%d", &n);
int *array = (int*)malloc(n * sizeof(*array));
int *temp = (int*)malloc(n * sizeof(*temp));
for (i = 0; i < n; ++i)
scanf("%d", &array[i]);
sort(array, temp, n, 0);
for (i = 0; i < n; ++i)
printf("%d ", array[i]);
return 0;
}