Cod sursa(job #870275)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 3 februarie 2013 01:31:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
int n,x[500002],y[500002],i;

int ic(int st, int m, int dr)
{
    int i,j,k;
    i=st; j=m+1;
    k=0;
    while(i<=m && j<=dr)
    {
        k++;
        if (x[i]<=x[j]){y[k]=x[i]; i++;}
        else {y[k]=x[j]; j++;}
    }
    while(i<=m){k++;y[k]=x[i];i++;}
    while(j<=dr){k++;y[k]=x[j];j++;}
    i=st; k=1;
    while(i<=dr){x[i]=y[k];i++;k++;}
}
void ms(int st, int dr)
{
    int m;
    if (st<dr)
    {
        m=st+(dr-st)/2;
        ms(st,m);
        ms(m+1,dr);
        ic(st,m,dr);
    }
}
void tip()
{
    int i;
    for (i=1;i<=n;i++)
        printf("%d ",x[i]);
}

int main()
{
    freopen("algsort.in","rt",stdin);
    freopen("algsort.out","wt",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++) scanf("%d",x+i);
    ms(1,n);
    tip();
    fclose(stdout);
    fclose(stdin);
    return 0;
}