Pagini recente » Cod sursa (job #1430805) | Cod sursa (job #2240255) | Cod sursa (job #1970041) | Cod sursa (job #2947567) | Cod sursa (job #800052)
Cod sursa(job #800052)
#include <cstdio>
#include <cstdlib>
int n,a[500000];
FILE*f;
FILE*g;
void merge(int st,int dr,int mij)
{
int i,j,q,p;
int b[500000];
i=st;
q=i;
j=mij+1;
while ((i<=mij) && (j<=dr))
{
if (a[i]>a[j])
{b[q]=a[j];
j++;
}
else
{
b[q]=a[i];
i++;}
q++;
}
while (i<=mij)
{
b[q]=a[i];
i++;q++;}
while (j<=dr)
{
b[q]=a[j];
j++;q++;}
for (p=st;p<=dr;p++)
a[p]=b[p];
}
void sortare(int st,int dr)
{
int mij;
if (st<dr)
{
mij=(st+dr)/2;
sortare (st,mij);
sortare (mij+1,dr);
merge(st,dr,mij);}
}
int main()
{
f=fopen ("algsort.in","r");
g=fopen ("algsort.out","w");
int i;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
sortare(1,n);
for (i=1;i<=n;i++)
fprintf(g,"%d ",a[i]);
return 0;
}