Cod sursa(job #2617605)

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

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

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

void display(int *array, int size) {
   for(int i = 0; i<size; i++)
      cout << array[i] << " ";
}

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>>a[i];
    mergeSort(V, 0, n-1);
    display(V, n)
}