Pagini recente » Cod sursa (job #944455) | Cod sursa (job #3311972) | Cod sursa (job #867887) | Cod sursa (job #624031) | Cod sursa (job #1880320)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i,x[500010],y[500010];
void merge_sort(int,int),interclaseaza(int,int,int);
int main()
{
f>>n;
for(i=1; i<=n; i++)
f>>x[i];
merge_sort(1,n);
for(i=1; i<=n; i++)
g<<x[i]<<' ';
return 0;
}
void merge_sort(int L,int R)
{
if(L==R)return;
if(L==R-1)
{
if(x[L]>x[R])
swap(x[L],x[R]);
return;
}
int M=(L+R)/2;
merge_sort(L,M);
merge_sort(M+1,R);
interclaseaza(L,M,R);
}
void intreclaseaza(int L,int M,int R)
{
int i,j,k;
for(i=L;i<=R;i++)
y[i]=x[i];
for(i=L,j=M+1,k=L;i<=M&&j<=R;)
{
if(y[i]<=y[j])
x[k++]=y[i++];
else
x[k++]=y[j++];
}
for(;i<=M;i++,k++)x[k]=y[i];
for(;j<=R;j++,k++)x[k]=y[j];
}