Pagini recente » Cod sursa (job #1000165) | Cod sursa (job #2345965) | Cod sursa (job #2112965) | Cod sursa (job #968542) | Cod sursa (job #1020626)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int lungime, x;
int afisare(vector<int>& numere, ofstream& fout) {
for (vector<int>::iterator numar = numere.begin(); numar != numere.end(); ++numar) {
fout << *numar << " " ;
}
return 0;
}
int swap (int& a, int& b) {
int temp = a;
a = b;
b = temp;
return 0;
}
int merge(vector<int>& numere, int begin, int middle, int end) {
vector<int> temporar;
int temp;
int first = begin;
int second = middle + 1;
while(first <= middle || second <= end) {
if (second > end || (first <= middle && numere[first] <= numere[second])) {
temporar.push_back(numere[first++]);
}
else {
temporar.push_back(numere[second++]);
}
}
for (int i = 0; i <= end - begin; i++) {
numere[begin + i] = temporar[i];
}
return 0;
}
int merge_sort(vector<int>& numere, int begin, int end) {
if (begin == end) {
return 0;
}
int middle = (end-begin) / 2 + begin;
merge_sort(numere, begin, middle);
merge_sort(numere, middle+1, end);
merge(numere, begin, middle, end);
return 0;
}
int main(int argc, char const *argv[]) {
vector<int> numere;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> lungime;
for (int i = 0; i < lungime; i++) {
fin >> x;
numere.push_back(x);
}
merge_sort(numere, 0, lungime-1);
afisare(numere, fout);
}