Pagini recente » Cod sursa (job #2048249) | Cod sursa (job #1799488) | Cod sursa (job #284003) | Cod sursa (job #1670843) | Cod sursa (job #1017466)
#include <iostream>
#include<stdio.h>
#define maxi 500005
int a[maxi];
void Intercl(int* t,int st,int m,int dr)
{int i,j,k;
int* aux=new int[dr-st+1];
for(i=m+1; i>st; i--)
aux[i-1]=t[i-1];
for(j=m; j<=dr-1; j++)
aux[dr+m-j]=t[j+1];
for(k=st; k<=dr; k++)
if(aux[j] < aux[i])
t[k]=aux[j--];
else
t[k]=aux[i++];
}
void Merge(int* t,int st,int dr)
{if(st < dr)
{unsigned m=(dr+st)/2; Merge(t,st,m); Merge(t,m+1,dr);
Intercl(t,st,m,dr);
}
}
int main()
{
int n, i;
FILE *f,*g;
f=fopen("algsort.in","r");
g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for (i=0;i<n;i++)
fscanf(f,"%d",&a[i]);
Merge(a,0,n-1);
for (i=0;i<n;i++)
fprintf(g,"%d ",a[i]);
fclose(f);
fclose(g);
return 0;
}