Cod sursa(job #2618927)

Utilizator ADRIAN.CATRINOIUAdrian Catrinoiu ADRIAN.CATRINOIU Data 26 mai 2020 16:26:11
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
//MERGESORT
void sortare(int st, int dr, vector < long long > & v) {
  if (v[st] > v[dr]) {
    int aux = v[st];
    v[st] = v[dr];
    v[dr] = aux;
  }
}
void interclasare(int st, int dr, int m, vector < long long > & v) {
  int i = st, j = m + 1, k = 0;
  vector < long long > w;
  while (i <= m && j <= dr) {
    if (v[i] < v[j])
      w.push_back(v[i++]);
    else
      w.push_back(v[j++]);
  }
  while (i <= m)
    w.push_back(v[i++]);
  while (j <= dr)
    w.push_back(v[j++]);

  for (i = st; i <= dr; i++)
    v[i] = w[i - st];
}

void MergeSort(int st, int dr, vector < long long > & v) {
  int mij;
  if (dr - st <= 1)
    sortare(st, dr, v);
  else {
    mij = st + (dr - st) / 2;
    MergeSort(st, mij, v);
    MergeSort(mij + 1, dr, v);
    interclasare(st, dr, mij, v);
  }
}

int main()
{
    int n,i,m;
    vector<long long> v;
    fin>>n;

    for(i=0;i<n;i++)
    {
        fin>>m;
        v.push_back(m);
    }

    MergeSort(0,n-1,v);
    for(i=0;i<n;i++)
    {
        fout<<v[i]<<" ";
    }
    return 0;
}