Pagini recente » Cod sursa (job #1580081) | Cod sursa (job #256732) | Cod sursa (job #1885002) | Cod sursa (job #2586962) | Cod sursa (job #1015570)
#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;
}