Pagini recente » Cod sursa (job #1586047) | Cod sursa (job #1557240) | Cod sursa (job #1633351) | Cod sursa (job #1435661) | Cod sursa (job #1294343)
#include <fstream>
#include <algorithm>
#define NMAX 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[NMAX],b[NMAX],N;
void merge(int sir[], int res[], int S, int F)
{
int mid=S+(F-S)/2+1,piv=mid;
int aux=S;
for(int i=S;i<=F;i++)
{
if(S<mid && (piv>F || sir[S]<=sir[piv]))
res[i]=sir[S++];
else
res[i]=sir[piv++];
}
for(int i=aux;i<=F;i++)
sir[i]=res[i];
}
void mergesort(int sir[],int res[],int S,int F)
{
int mid;
mid=S+(F-S)/2;
if(F-S>=1)
{
mergesort(sir,res,S,mid);
mergesort(sir,res,mid+1,F);
merge(sir,res,S,F);
}
}
int main()
{
int i;
f>>N;
for(i=1;i<=N;i++)
f>>a[i];
mergesort(a,b,1,N);
for(i=1;i<=N;i++)
g<<a[i]<<' ';
}