Pagini recente » Cod sursa (job #2937203) | Cod sursa (job #2982878) | Cod sursa (job #790239) | Cod sursa (job #2219126) | Cod sursa (job #2906387)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int n;
vector <unsigned> v;
void Citire() {
ifstream f("algsort.in");
f >> n;
v.resize(n);
for(int i = 0; i < n; i++)
f >> v[i];
}
void Merge(int l, int m, int r) {
vector<unsigned> aux;
aux.resize(r - l + 1);
int i1 = l, i2 = m + 1, k = 0;
while(i1 <= m && i2 <= r) {
if(v[i1] < v[i2])
aux[k++] = v[i1++];
else
aux[k++] = v[i2++];
}
while(i1 <= m) {
aux[k++] = v[i1++];
}
while(i2 <= r) {
aux[k++] = v[i2++];
}
for(int i = 0; i < k; i++)
v[l + i] = aux[i];
}
void MergeSort(int l, int r) {
if(l < r) {
int m = (l + r) / 2;
MergeSort(l, m);
MergeSort(m + 1, r);
Merge(l, m, r);
}
}
void Afisare() {
ofstream g("algsort.out");
for(int i = 0; i < n; i++)
g << v[i] << ' ';
}
int main() {
Citire();
MergeSort(0, n - 1);
Afisare();
return 0;
}