Pagini recente » Cod sursa (job #2575804) | Cod sursa (job #1079252) | Cod sursa (job #3255068) | Clasament Summer Challenge Unu | Cod sursa (job #443382)
Cod sursa(job #443382)
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;
const char Input[] = "algsort.in";
const char Output[] = "algsort.out";
void RadixSort( vector <int> &a, int base ) {
int const MAX = 10;
static vector <int> buckets[MAX];
int pow = 1;
for( int i = 0; i < MAX; ++i ) {
buckets[i].resize( a.size() );
buckets[i][0] = 0;
}
for( int i = 0; i < base; ++i, pow *= 10 ) {
for( int j = 0; j < MAX; ++j ) {
buckets[j][0] = 0;
}
for( int j = 0; j < (int) a.size(); ++j ) {
int index = (a[j] / pow) % 10;
buckets[index][++buckets[index][0]] = a[j];
}
int cnt = 0;
for( int j = 0; j < MAX; ++j ) {
for( int k = 0; k < buckets[j][0]; ++k ) {
a[cnt++] = buckets[j][k + 1];
}
}
}
}
int main() {
ifstream fin( Input );
ofstream fout( Output );
int N;
fin >> N;
vector <int> v;
v.resize( N );
for( int i = 0; i < N; ++i )
fin >> v[i];
RadixSort( v, 10 );
for( int i = 0; i < N; ++i )
fout << v[i] << " ";
fin.close();
fout.close();
return 0;
}