Pagini recente » Cod sursa (job #1301819) | Cod sursa (job #1428982) | Cod sursa (job #2917742) | Cod sursa (job #2208421) | Cod sursa (job #2898343)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void MergeSortIntermediar(vector<int> &v,int r,int mid,int l){
int temp[l - r + 1];
int i = r, j = mid+1, k = 0;
while(i <= mid && j <= l) {
if(v[i] <= v[j]) {
temp[k] = v[i];
k += 1; i += 1;
}
else {
temp[k] = v[j];
k += 1; j += 1;
}
}
while(i <= mid) {
temp[k] =v[i];
k += 1; i += 1;
}
while(j <= l) {
temp[k] = v[j];
k += 1; j += 1;
}
for(i = r; i <= l; i += 1) {
v[i] = temp[i - r];
}
}
void MergeSort(vector<int> &v, int r, int l){
if(r < l) {
int mid = (r+l) / 2;
MergeSort(v, r, mid);
MergeSort(v, mid+1, l);
MergeSortIntermediar(v, r, mid,l);
}
}
int main() {
int n;
vector<int> v;
fin>>n;
for(int i=0;i<n;i++)
{
int a;
fin>>a;
v.push_back(a);
}
MergeSort(v,0,v.size()-1);
for(auto i: v){
fout<<i<<' ';
}
return 0;
}