Cod sursa(job #1015570)

Utilizator ionutzmarcFMI ilie ionut ionutzmarc Data 24 octombrie 2013 20:55:58
Problema Sortare prin comparare Scor 80
Compilator c Status done
Runda Arhiva educationala Marime 1.04 kb
#include <stdio.h>
#include <stdlib.h>

int vec[500000];
int *v;
void mergee (int a, int q, int b)
    {
        int i=0,p1,p2;
        p1=a; p2=q+1;

        while (p1<=q || p2<=b)
            if (p1<=q && p2<=b)
                if (v[p1]<v[p2])
                    vec[++i]=v[p1++];
                else
                    vec[++i]=v[p2++];
            else if (p1<=q)
                vec[++i]=v[p1++];
            else
                vec[++i]=v[p2++];

        for (i=a; i<=b; i++)
            v[i]=vec[i-a+1];
    }
int sortt(int *v,int st,int dr ){
if(st==dr )return 0;
int mij=(st+dr)/2;
sortt(v,st,mij);
sortt(v,mij+1,dr);
mergee(st,mij,dr);


}
int main()
{   int n,i;
     FILE *f = fopen("algsort.in", "r");
    FILE *g = fopen("algsort.out", "w");
     fscanf(f, "%d", &n);
     v= (int*)calloc(n+1,sizeof(int));
    for (i = 0; i < n; i++)
        {
        fscanf(f, "%d", &v[i]);
    }
 v[n]=1900000000;
     sortt(v,0,n);
    for (i = 0; i < n; i++)
        fprintf(g,"%d ", v[i]);

    return 0;
}