Pagini recente » Cod sursa (job #3236074) | Cod sursa (job #1857173) | Cod sursa (job #2070496) | Cod sursa (job #1186539) | Cod sursa (job #1588886)
#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]) b[++k]=a[i1++];
else b[++k]=a[i2++];
for(i=i1;i<=mid;i++) b[++k]=a[i];
for(i=i2;i<=dr;i++) 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;
}