Pagini recente » Cod sursa (job #1505358) | Cod sursa (job #998931) | Rating Cuciureanu Vlad (BigBadVlad) | Cod sursa (job #1049776) | Cod sursa (job #2049093)
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
#define ll long long
#define ull unsigned long long
#define pb push_back
#define mp make_pair
const int NMax = 1e7 + 5;
const int inf = 1e9 + 5;
int N;
int v[NMax];
void radixSort(int,int);
int main() {
in>>N;
for (int i=1;i <= N;++i) {
in>>v[i];
}
int pw = 1;
for (int i=1;i <= 10;++i) {
radixSort(i,pw);
pw *= 10;
}
for (int i=1;i <= N;++i) {
out<<v[i]<<' ';
}
in.close();out.close();
return 0;
}
void radixSort(int pos,int pw) {
queue<int> Q[10 + 5];
for (int i=1;i <= N;++i) {
int digit = v[i]/pw % 10;
Q[digit].push(v[i]);
}
int dim = 0;
for (int i=0;i <= 9;++i) {
while (Q[i].size()) {
v[++dim] = Q[i].front();
Q[i].pop();
}
}
}