Cod sursa(job #1946179)

Utilizator VarticeanNicolae Varticean Varticean Data 29 martie 2017 22:49:24
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;

void merge_sort(int v[],int left,int right)
{
    if(right - left <= 0)
        return;
    else if(right - left == 1 && v[left] > v[right]){
      swap(v[right], v[left]);
        return;
    }
    else if(right - left == 1)
        return;
    int aux[right - left + 5];
    int mid = (left + right)/2;
    merge_sort(v,left,mid);
    merge_sort(v,mid + 1,right);
    int i = left,j = mid + 1,sz = 0;
    while(i <= mid && j <= right){
        if(v[i] <= v[j]){
            aux[++sz] = v[i];
            ++i;
        }
        else{
            aux[++sz] = v[j];
            ++j;
        }
    }
    while(i <= mid){
        aux[++sz] = v[i];
        ++i;
    }
    while(j <= right){
        aux[++sz] = v[j];
        ++j;
    }
    for(int k = 1 ; k <= sz ; ++k)
        v[left + k - 1] = aux[k];
}


int main()
{
    ifstream in("algsort.in");
    ofstream out("algsort.out");
     int n, a[500000],i,j,aux;

    in>>n;

    for (i=1; i<=n; i++){
        in>>a[i];
    }

    merge_sort(a,1,n);

    for ( i=1; i<=n; i++){
        out<<a[i]<<" ";
    }
    return 0;
}