Pagini recente » Cod sursa (job #2478278) | Cod sursa (job #1398824) | Cod sursa (job #3231254) | Cod sursa (job #231236) | Cod sursa (job #1655277)
// C++ implementation of Radix Sort
#include <iostream>
#include <fstream>
#include <queue>
#include <string.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int mx;
int arr[500003];
int n;
int qu[10][500003];
void countSort(int exp) {
int i;
int q[10] = {0};
int t = 0;
for(int i = 0; i < n; i++) {
t = (arr[i]/exp)%10;
qu[t][q[t]++] = arr[i];
}
int cnt = 0;
for(int i = 0; i < 10; i++)
for(int j = 0; j < q[i]; j++)
arr[cnt++] = qu[i][j];
}
void radixsort() {
int m = mx;
for (int exp = 1; m/exp > 0; exp *= 10)
countSort(exp);
}
int main() {
in >> n;
for(int i = 0; i < n; i++) {
in >> arr[i];
if(arr[i] > mx)
mx = arr[i];
}
radixsort();
for (int i = 0; i < n; i++)
out << arr[i] << " ";
return 0;
}