Cod sursa(job #1265359)

Utilizator cldmeClaudiu Ion cldme Data 17 noiembrie 2014 10:32:15
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
const int N=500001;

int aux[N];
void myMerge (int st,int dr,int v[N])
{
    int i, k, j;
    int m=(st+dr)/2;
    i=k=st;
    j=m+1;
    while ( i<=m && j<=dr)
        if (v[i]<=v[j])
            aux[k++]=v[i++];
        else
            aux[k++]=v[j++];
    while (i<=m) aux[k++]=v[i++];
    while (j<=dr) aux[k++]=v[j++];
    for (i=st; i<=dr; i++)
        v[i]=aux[i];
}

void ms(int st,int dr,int v[N])
{

    if (st==dr) return;
    int m=(st+dr)/2;
    ms(st,m,v);
    ms(m+1,dr,v);
    myMerge (st,dr,v);
}



int main()
{
    int i,a,n,st,dr,v[N];
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++)
        scanf("%d",&v[i]);

    ms(1,n,v);
    for(i=1;i<=n;i++)
        printf("%d ",v[i]);
}