Pagini recente » Cod sursa (job #3186771) | Cod sursa (job #3178515) | Cod sursa (job #772072) | Cod sursa (job #1787793) | Cod sursa (job #3183187)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("radixsort.in");
ofstream out ("radixsort.out");
const int nm = 1e7;
const int dg = 10;
int n;
int curi[nm];
int fq[dg], pos[dg];
int nei[nm];
void step (int po){
for (int d = 0; d < dg; d++)
fq[d] = 0;
for (int i = 0; i < n; i++)
fq[curi[i] / po % 10]++;
pos[0] = 0;
for (int d = 1; d < dg; d++)
pos[d] = pos[d - 1] + fq[d - 1];
for (int i = 0; i < n; i++){
nei[pos[curi[i] / po % 10]] = curi[i];
pos[curi[i] / po % 10]++;
}
for (int i = 0; i < n; i++)
curi[i] = nei[i];
}
void sort (void) {
int maxValue = 0;
for (int i = 0; i < n; i ++)
maxValue = max (maxValue, curi[i]);
for (long long power = 1; power <= maxValue; power *= 10) //
step (power);
}
int main (){
int n;
in >> n;
for (int i = 0; i < n; i++)
in >> curi[i];
return 0;
}