Cod sursa(job #2617631)

Utilizator MarculescuAndreiMarculescu Andrei-Cristian MarculescuAndrei Data 22 mai 2020 14:59:46
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include<iostream>
#include <fstream>
using namespace std;

ifstream f ("algsort.in.txt");
ofstream g ("algsort.out.txt");

void swapping(int &a, int &b) {
   int temp;
   temp = a;
   a = b;
   b = temp;
}

void Merge(int *array, int l, int m, int r) {
   int i, j, p, nl, nr;

   nl = m-l+1; nr = r-m;
   int leftArr[nl], rightArr[nr];

   for(i = 0; i<nl; i++)
      leftArr[i] = array[l+i];
   for(j = 0; j<nr; j++)
      rightArr[j] = array[m+1+j];
   i = 0; j = 0; p = l;

   while(i < nl && j<nr) {
      if(leftArr[i] <= rightArr[j]) {
         array[p] = leftArr[i];
         i++;
      }else{
         array[p] = rightArr[j];
         j++;
      }
      p++;
   }
   while(i<nl) {
      array[p] = leftArr[i];
      i++; p++;
   }
   while(j<nr) {
      array[p] = rightArr[j];
      j++; p++;
   }
}
void mergeSort(int *array, int l, int r) {
   int m;
   if(l < r) {
      int m = l+(r-l)/2;

      mergeSort(array, l, m);
      mergeSort(array, m+1, r);
      Merge(array, l, m, r);
   }
}
int main() {
    int V[1000000];
    int n, i;
    f>>n;
    for(i=1; i<=n; i++)
        f>>V[i];
    mergeSort(V, 0, n-1);
    for(i=1; i<=n; i++)
        g<<V[i];
}