Cod sursa(job #2943034)

Utilizator biancaivascuBianca Ivascu biancaivascu Data 20 noiembrie 2022 14:41:13
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

#define MaxN 500000

int v[MaxN];
int v1[MaxN], v2[MaxN];

void intercls(int st, int dr)
{
  int mij=(st+dr)/2, i, poz1=st, poz2=st;
  for(i=st; i<=mij; i++)
  {
    v1[i]=v[i];
    v2[i]=v[i+mij-st+1];
  }

  i=st;
  while(i<=dr)
  {
    if(poz1>mij)
    {
      v[i]=v2[poz2];
      poz2++;
    }
    else if(poz2>mij)
    {
      v[i]=v1[poz1];
      poz1++;
    }
    else if(v1[poz1]<v2[poz2])
    {
      v[i]=v1[poz1];
      poz1++;
    }
    else
    {
      v[i]=v2[poz2];
      poz2++;
    }
    i++;
  }
}
void msort(int st, int dr) {
    if(st==dr) return;

    int mij=(dr+st)/2;
    msort(st, mij);
    msort(mij+1, dr);

    intercls(st, dr);
}
int main() {
    ifstream in("algsort.in");
    ofstream out("algsort.out");
    int n, i;
    in>>n;
    for(i=0; i<n; i++) {
        in>>v[i];
    }

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