Pagini recente » Cod sursa (job #180126) | Cod sursa (job #1113459) | Cod sursa (job #2750650) | Cod sursa (job #1807419) | Cod sursa (job #1588882)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,b[500005],a[500005];
void Merge(int st,int dr)
{ int k=0,i,i1,i2,mid=(st+dr)/2;
if (mid-st+1>1) Merge(st,mid);
if (dr-mid>1) Merge(mid+1,dr);
i1=st; i2=mid+1;
while(i1<=mid && i2<=dr)
{ if (a[i1]<a[i2]) {k++; b[k]=a[i1]; i1++;}
else {k++; b[k]=a[i2]; i2++;}
}
for(i=i1;i<=mid;i++) {k++; b[k]=a[i];}
for(i=i2;i<=dr;i++) {k++; b[k]=a[i];}
for(i=st;i<=dr;i++)
a[i]=b[i-st+1];
}
int main()
{ int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
Merge(1,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
return 0;
}