Pagini recente » Cod sursa (job #41106) | Cod sursa (job #1434724) | Cod sursa (job #1757241) | Cod sursa (job #2197058) | Cod sursa (job #1718433)
#include <bits/stdc++.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int a[500001],n,aux[500001];
void Merge(int beg1,int end1,int beg2,int end2)
{
int k=0,i,j;
for(i=beg1,j=beg2;i<=end1 && j<=end2;)
{
if(a[i] < a[j])
{
aux[++k]=a[i];
i++;
}
else{
aux[++k]=a[j];
j++;
}
}
if(i<=end1)
{
for(;i<=end1;i++)
{
aux[++k]=a[i];
}
}
if(j<=end2)
{
for(;j<=end2;j++)
{
aux[++k]=a[j];
}
}
for(i=1;i<=k;i++)
{
a[i+beg1-1]=aux[i];
}
}
void MergeSort(int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
MergeSort(left,mid);
MergeSort(mid+1,right);
Merge(left,mid,mid+1,right);
}
}
int main() {
in>>n;
for(int i=1;i<=n;i++)
{
in>>a[i];
}
MergeSort(1,n);
for(int i=1;i<=n;i++)
{
out<<a[i]<<' ';
}
return 0;
}