Pagini recente » Cod sursa (job #687629) | Cod sursa (job #2853614) | Cod sursa (job #2882684) | Cod sursa (job #441844) | Cod sursa (job #2182798)
#include <bits/stdc++.h>
#define N 500010
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[N];
void merge(int l,int mij,int r)
{
int i,j,k;
int n1=mij-l+1;
int n2=r-mij;
int L[n1+1],R[n2+1];
for(i=1;i<=n1;++i)
L[i]=v[l+i-1];
for(j=1;j<=n2;++j)
R[j]=v[mij+j];
i=j=1;
k=l;
while(i<=n1&&j<=n2)
{
if(L[i]<=R[j])
{
v[k]=L[i];
++i;
}
else
{
v[k]=R[j];
++j;
}
++k;
}
while(i<=n1)
{
v[k]=L[i];
++i,++k;
}
while(j<=n2)
{
v[k]=R[j];
++j,++k;
}
}
void mergeSort(int l,int r)
{
if(l<r)
{
int mij=(l+r)/2;
mergeSort(l,mij);
mergeSort(mij+1,r);
merge(l,mij,r);
}
}
int main()
{
f>>n;
for(int i=1;i<=n;++i)
f>>v[i];
mergeSort(1,n);
for(int i=1;i<=n;++i)
g<<v[i]<<" ";
g<<"\n";
return 0;
}