Pagini recente » Cod sursa (job #204391) | Cod sursa (job #3229523) | Cod sursa (job #2442359) | Cod sursa (job #377959) | Cod sursa (job #288126)
Cod sursa(job #288126)
#include<fstream.h>
int n;
long a[500001];
ifstream f("algsort.in");
ofstream g("algsort.out");
void merge(int st,int dr,int m)
{
int b[500001],k=0,i=st,j=m+1;
while (i<=m && j<=dr)
if (a[i]<=a[j]) b[++k]=a[i++];
else b[++k]=a[j++];
if (i<=m)
for (j=i;j<=m;j++) b[++k]=a[j];
else
for (i=j;i<=dr;i++) b[++k]=a[i];
k=1;
for (i=st;i<=dr;i++) a[i]=b[k++];
}
void divide(int st,int dr)
{
int m,aux;
if ((dr-st)<=1)
{
if (a[st]>a[dr])
{
aux=a[st];
a[st]=a[dr];
a[dr]=aux;
}
}
else
{
m=(st+dr)/2;
divide(st,m);
divide(m+1,dr);
merge(st,dr,m);
}
}
int main()
{
int i;
f>>n;
for (i=1;i<=n;i++) f>>a[i];
divide(1,n);
for (i=1;i<=n;i++) g<<a[i]<<" ";
g.close();
return 0;
}