Pagini recente » Cod sursa (job #1003708) | Cod sursa (job #507425) | Cod sursa (job #1419785) | Cod sursa (job #971198) | Cod sursa (job #2233170)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
void Merge (int a, int b, int c, vector < int > &v) {
vector < int > aux (c - a + 2);
int ind = 0;
int i = a, j = b + 1;
while (i <= b and j <= c) {
if (v[i] < v[j]) {
aux[++ ind] = v[i ++];
}
else {
aux[++ ind] = v[j ++];
}
}
while (i <= b) {
aux[++ ind] = v[i ++];
}
while (j <= c) {
aux[++ ind] = v[j ++];
}
for (int i = 1; i <= ind; ++ i) {
v[a + i - 1] = aux[i];
}
}
void MergeSort (int st, int dr, vector < int > &v) {
if (st == dr) {
return;
}
int mid = (st + dr) >> 1;
MergeSort (st, mid, v);
MergeSort (mid + 1, dr, v);
Merge (st, mid, dr, v);
}
void RadixSort (int n, vector < int > &v) {
int base = 1 << 8;
vector < vector < int > > buckets (base);
for (int i = 0; i < 4; ++ i) {
for (auto &x : buckets) {
x.clear ();
}
int diviz = 1 << (i * 8);
for (int i = 1; i <= n; ++ i) {
buckets[(v[i] / diviz) % base].push_back (v[i]);
}
int ind = 0;
for (auto &x : buckets) {
for (auto y : x) {
v[++ ind] = y;
}
}
}
}
int main () {
int n;
cin >> n;
vector < int > v (n + 1);
for (int i = 1; i <= n; ++ i) {
cin >> v[i];
}
// ==============================================//
sort (v.begin () + 1, v.end ());
//=============================================//
/* MergeSort (1, n, v); */
//=============================================//
/* RadixSort (n, v); */
//=============================================//
for (int i = 1; i <= n; ++ i) {
cout << v[i] << ' ';
}
cout << '\n';
}