Cod sursa(job #1313662)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 10 ianuarie 2015 22:27:16
Problema Sortare prin comparare Scor 40
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 N,v[500005],i,j;

void interclasare(int st,int m,int dr)
{
    int w[500005]={0},k=0,z;
    i=st; j=m+1;
    while(i<=m && j<=dr)
    {
        if(v[i]<v[j])
            {w[++k]=v[i]; i++;}
        else
            if(v[j]<v[i])
                {w[++k]=v[j]; j++;}
            else
                {w[++k]=v[i]; j++;}
    }
    while(i<=m)
        {w[++k]=v[i]; i++;}
    while(j<=dr)
        {w[++k]=v[j]; j++;}
    z=st;
    for(i=1;i<=k;i++)
        v[z++]=w[i];
}

void mergesort(int st,int dr)
{
    if(st<dr)
    {
        int m=(st+dr)/2;
        mergesort(st,m);
        mergesort(m+1,dr);
        interclasare(st,m,dr);
    }
}

int main()
{
    f>>N;
    for(i=1;i<=N;i++)
        f>>v[i];
    mergesort(1,N);
    for(i=1;i<=N;i++)
        g<<v[i]<<" ";
    f.close(); g.close();
    return 0;
}