Pagini recente » Cod sursa (job #1879333) | Cod sursa (job #874811) | Cod sursa (job #717401) | Cod sursa (job #2059685) | Cod sursa (job #2890806)
#include <bits/stdc++.h>
using namespace std;
int n,m,a[500005],aux[500005],x;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int st1,int dr1,int st2, int dr2)
{
int ind1=st1;
int ind2=st2;
int nr=0;
while (ind1<=dr1 && ind2<=dr2)
{
if( a[ind1]<=a[ind2])
{
nr++;
aux[nr]=a[ind1];
ind1++;
}
else
{
nr++;
aux[nr]=a[ind2];
ind2++;
}
}
while (ind1<=dr1)
{
nr++;
aux[nr]=a[ind1];
ind1++;
}
while (ind2<=dr2)
{
nr++;
aux[nr]=a[ind2];
ind2++;
}
for (int i=1;i<=nr;i++)
a[i+st1-1]=aux[i];
}
void merge_sort(int st,int dr)
{
int mij;
if (st==dr) return;
mij=(st+dr)/2;
merge_sort(st,mij);
merge_sort(mij+1,dr);
interclasare(st,mij,mij+1,dr);
}
int main()
{
fin>>n;
for (int i=1;i<=n;i++) fin>>a[i];
merge_sort(1,n);
for (int i=1;i<=n;i++)
fout<<a[i]<<" ";
}