Pagini recente » Cod sursa (job #2219397) | Cod sursa (job #1371388) | Cod sursa (job #1663478) | Cod sursa (job #1875912) | Cod sursa (job #1769414)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500001], k[500001];
void MergeVector(int l, int r)
{
int m=(l+r)/2,p=l,q,inc=l;
q=m+1;
while(p <= m && q <= r)
{
if(v[p] < v[q])
{
k[inc]=v[p];
p++;
}
else
{
k[inc]=v[q];
q++;
}
inc++;
}
for(; p<=m; p++)
{
k[inc]=v[p];
inc++;
}
for(; q<=r; q++)
{
k[inc]=v[q];
inc++;
}
for(inc=l; inc<=r; inc++)
{
v[inc]=k[inc];
}
}
void MergeSort(int l, int r)
{
if(l==r)
{
return;
}
int m=(l+r)/2;
MergeSort(l,m);
MergeSort(m+1,r);
MergeVector(l,r);
}
int main()
{
int n,i;
in>>n;
for(i=1; i<=n; i++)
in>>v[i];
MergeSort(1, n);
for(i=1; i<=n; i++)out<<v[i]<<' ';
return 0;
}