Cod sursa(job #1525292)

Utilizator AlexVolatiluVoicu Alex AlexVolatilu Data 14 noiembrie 2015 22:13:47
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>

using namespace std;

int aux[500000];

void intercalare(int s, int d, int m, int *v)
{
    int i,k,j=m+1;
    i=k=s;
    while(i<=m&&j<=d) aux[k++] = v[i]<v[j] ? v[i++] : v[j++];
    while(i<=m) aux[k++]=v[i++];
    while(j<=d) aux[k++]=v[j++];
    i=s;
    while(i<=d) v[i]=aux[i++];
}

void mergesort(int s, int d, int *v)
{
    if(s==d) return;
    int m=(s+d)/2;
    mergesort(s,m,v);
    mergesort(m+1,d,v);
    intercalare(s,d,m,v);
}

int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    int v[500000],i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",v+i);
    mergesort(0,n-1,v);
    for(i=0;i<n;i++)
        printf("%d ",v[i]);
    return 0;
}