Cod sursa(job #2163233)

Utilizator Alexandru_StoianStoian Sorin Alexandru Alexandru_Stoian Data 12 martie 2018 17:22:33
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a[ 100001 ],v[ 100001 ], n, i, q, nr;

void merge_sort(int a[], int in, int sf) {
    if (in == sf) {
        return;
    }
    int mij = (in + sf) / 2;
    merge_sort(a, in, mij);
    merge_sort(a, mij + 1, sf);

    int nr=0;
    int l=in, r=mij+1;

    while(l<=mij&& r <= sf) {
        if(a[l] < a[r]) {
            v[++nr] = a[l];
            ++l;
        }
        else{
            v[++nr] = a[r];
            ++r;
        }
    }
    while(l<=mij) {
        v[++nr]=a[l];
        ++l;
    }
    while(r<=sf) {
        v[++nr]=a[r];
        ++r;
    }
    int i,t;
    for(i=in, t=1; i<=sf; ++i)
        a[i]=v[t++];
}

int main(){
    cin >> n;
    for( i = 1; i <= n; ++i )
        cin >> a[ i ];
    merge_sort(a, 1, n );
    for( i = 1; i <= n; ++i )
        cout << a[ i ] << ' ';
    return 0;
}