Cod sursa(job #2465711)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 30 septembrie 2019 18:38:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
///  **********
///  MERGE SORT
///  **********

#include <fstream>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,i,j,v[500001],a[500001];

void inter(int st, int mid, int dr){
    int i,j,k;
    for(i=st;i<=mid;i++)
        a[i]=v[i];

    i=st; j=mid+1; k=st-1;
    while(i<=mid && j<=dr){
        if(a[i]<=v[j]){
            v[++k]=a[i++];
        }else{
            v[++k]=v[j++];
        }
    }

    while(i<=mid)
        v[++k]=a[i++];
    while(j<=dr)
        v[++k]=v[j++];
}

void Sort(int st,int dr){
    if(st==dr)
        return;

    int mid=(st+dr)/2;
    Sort(st,mid);
    Sort(mid+1,dr);

    inter(st,mid,dr);
}

int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];

    Sort(1,n);

    for(i=1;i<=n;i++)
        fout<<v[i]<<" ";

    return 0;
}