Pagini recente » Cod sursa (job #1882319) | Cod sursa (job #292928) | Cod sursa (job #1675574) | Cod sursa (job #2394319) | Cod sursa (job #2651869)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int v[500005], a[500005], b[500005];
void Merge(int st, int mij, int dr)
{
int k1=0, k2=0, p1=1, p2=1, p=st;
cout<<st<<" "<<mij<<" "<<dr<<"\n";
for(int i=st;i<=mij;i++)
{
a[++k1]=v[i];
}
for(int i=mij+1;i<=dr;i++)
{
b[++k2]=v[i];
}
while(p1<=k1&&p2<=k2)
{
if(a[p1]<=b[p2])
{
v[p]=a[p1];
p1++;
}
else
{
v[p]=b[p2];
p2++;
}
p++;
}
while(p1<=k1)
{
v[p]=a[p1];
p1++;
p++;
}
while(p2<=k2)
{
v[p]=b[p2];
p2++;
p++;
}
/*for(int i=1;i<=n;i++)
{
cout<<v[i]<<" ";
}
cout<<"\n";*/
}
void MergeSort(int st,int dr)
{
//cout<<st<<" "<<dr<<"\n";
if(st<dr)
{
int mij=(st+dr)/2;
MergeSort(st,mij);
MergeSort(mij+1,dr);
//cout<<"mesaj\n";
Merge(st,mij,dr);
}
return;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
MergeSort(1,n);
for(int i=1;i<=n;i++)
{
fout<<v[i]<<" ";
}
return 0;
}