Pagini recente » Cod sursa (job #2242492) | Cod sursa (job #1805606) | Cod sursa (job #645624) | Cod sursa (job #2531872) | Cod sursa (job #2906711)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void merge(vector <int> &v, int left, int middle, int right)
{
int i = left, j = middle + 1, k = 1;
vector <int> aux;
while(j <= right && i <= middle){
if(v[j] > v[i]){
aux.push_back(v[i++]);
}
else{
aux.push_back(v[j++]);
}
}
while(i <= middle){
aux.push_back(v[i++]);
}
while(j <= right){
aux.push_back(v[j++]);
}
for(i = left; i <= right; i++){
v[i] = aux[i-left];
}
}
void merge_sort(vector <int> &v, int left, int right)
{
if(right > left){
int middle = (left + right) / 2;
merge_sort(v, left, middle);
merge_sort(v, middle + 1, right);
merge(v, left, middle, right);
}
}
int main(){
int N,x;
vector<int> v;
fin>>N;
for(int i = 0; i < N; ++i){
fin>>x;
v.push_back(x);
}
merge_sort(v, 0, v.size()-1);
for(auto nr: v) fout<<nr<<' ';
return 0;
}