Cod sursa(job #1999745)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 12 iulie 2017 00:00:02
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
using namespace std;

ifstream t1("algsort.in");
ofstream t2("algsort.out");

int v[100],aux[100];
int n;

void merges(int st1,int dr1,int st2, int dr2)
{
    int i,i1=st1,i2=st2;
    int poz=1;
    while(i1<=dr1 || i2<=dr2)
    {
        if(i1<=dr1 && i2<=dr2)
        {
            if( v[i1]<=v[i2]) { aux[poz]=v[i1]; i1++; }
            else { aux[poz]=v[i2]; i2++;}
            poz++;
        }
        else
        {
            if(i2==dr2+1) { aux[poz]=v[i1];i1++;}
            else if(i1==dr1+1) {aux[poz]=v[i2]; i2++; }
            poz++;
        }
    }
    for(i=1;i<poz;i++) v[st1+i-1]=aux[i];
}

void sorte(int st,int dr)
{
    if(dr-st>=1)
    {
        int mid=(st+dr)/2;
        sorte(st,mid);
        sorte(mid+1,dr);
        merges(st,mid,mid+1,dr);
    }
}

int main()
{
    t1>>n;
    int i;
    for(i=1;i<=n;i++) t1>>v[i];
    sorte(1,n);
    for(i=1;i<=n;i++) t2<<v[i]<<' '; t2<<'\n';
    return 0;
}