Pagini recente » Istoria paginii utilizator/dianam2003 | Cod sursa (job #133766) | Cod sursa (job #1573340) | Monitorul de evaluare | Cod sursa (job #443379)
Cod sursa(job #443379)
#include <algorithm>
#include <fstream>
using namespace std;
const char Input[] = "algsort.in";
const char Output[] = "algsort.out";
const int Baz = 10;
const int Dim = 500000;
const int Max = 10;
int N, A[Dim];
int buckets[Max][Dim];
void radix_sort() {
int i, j, k, cnt, pow, index;
for( i = 0, pow = 1; i < Baz; ++i, pow *= 10 ) {
for( j = 0; j < N; ++j ) {
index = (A[j] / pow) % 10;
buckets[index][++buckets[index][0]] = A[j];
}
for( j = cnt = 0; j < Max; ++j )
for( k = 0; k < buckets[j][0]; ++k )
A[cnt++] = buckets[j][k + 1];
}
}
int main() {
ifstream fin( Input );
ofstream fout( Output );
int i;
fin >> N;
for( i = 0; i < N; ++i )
fin >> A[i];
radix_sort();
for( int i = 0; i < N; ++i )
fout << A[i] << " ";
fin.close();
fout.close();
return 0;
}