Pagini recente » Cod sursa (job #529777) | Cod sursa (job #3004587) | Cod sursa (job #2652484) | Cod sursa (job #703597) | Cod sursa (job #522785)
Cod sursa(job #522785)
#include <iostream>
#include <cstdlib>
using namespace std;
void sort(int *array, int *temp, int size, int level) {
int i, *index = (int*)calloc(256, sizeof(*index));
for (i = 0; i < size; ++i)
++index[(array[i] >> (level * 8)) & 255];
for (i = 255; i; --i)
index[i] = index[i - 1];
index[0] = 0;
for (i = 2; i < 256; ++i)
index[i] += index[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;
cin >> n;
int *array = (int*)malloc(n * sizeof(*array));
int *temp = (int*)malloc(n * sizeof(*temp));
for (i = 0; i < n; ++i)
cin >> array[i];
sort(array, temp, n, 0);
for (i = 0; i < n; ++i)
cout << array[i] << ' ';
return 0;
}