Pagini recente » Cod sursa (job #387041) | Cod sursa (job #816376) | Cod sursa (job #370444) | Cod sursa (job #1733558) | Cod sursa (job #645819)
Cod sursa(job #645819)
#include<fstream>
using namespace std;
int v[500001],t[500001];
void interclasare(int st,int m,int dr)
{int i=st,x=st,y=m+1,nr=0;
while(x<=m && y<=dr)
if(v[x]<v[y]) t[++nr]=v[x++];
else t[++nr]=v[y++];
while(x<=m)
t[++nr]=v[x++];
while(y<=dr)
t[++nr]=v[y++];
for(int j=1;j<=(dr-st+1);j++)
v[i++]=t[j];
}
void merge(int st,int dr)
{if(st<dr)
{int mijl=(st+dr)/2;
merge(st,mijl);
merge(mijl+1,dr);
interclasare(st,mijl,dr);
}
}
int main()
{int n,i;
ifstream f("algsort.in");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f.close();
merge(1,n);
ofstream g("algsort.out");
for(i=1;i<=n;i++)
g<<t[i]<<" ";
g.close();
return 0;
}