Pagini recente » Cod sursa (job #465322) | Cod sursa (job #2683682) | Cod sursa (job #1313286)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define nmax 500005
int n,v[nmax];
void citire()
{
scanf("%d", &n);
for(int i=1;i<=n;++i) scanf("%d", &v[i]);
}
void interclasare (int v[], int l, int r)
{
int st=l;
int t[nmax],k=1;
int mijl=l+(r-l)/2;
int i=l,j=mijl+1;
while(i<=mijl&&j<=r)
{
if(v[i]<v[j]) t[k]=v[i], i++, k++;
else t[k]=v[j], j++, k++;
}
if(i>mijl) for(;j<=r;++j,++k) t[k]=v[j];
else for(;i<=mijl;++i,++k) t[k]=v[i];
k--;
for(int i=1;i<=k;++i,++st)
v[st]=t[i];
}
void mergesort(int v[], int l, int r)
{
if(r>l){
mergesort(v,l,l+(r-l)/2);
mergesort(v,l+(r-l)/2+1,r);
interclasare(v,l,r);}
}
void afisare(){
for(int i=1;i<=n;++i) printf("%d ",v[i]);}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
citire();
mergesort(v,1,n);
afisare();
}