Pagini recente » Cod sursa (job #2356124) | Cod sursa (job #1615871) | Cod sursa (job #1156045) | Cod sursa (job #2655972) | Cod sursa (job #1385486)
#include <fstream>
#include <algorithm>
#define nmax 500010
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int N,V[nmax];
void cit()
{
in>>N;
for(int i=1;i<=N;++i)
in>>V[i];
}
void afis()
{
for(int i=1;i<=N;++i)
out<<V[i]<<" ";
out<<'\n';
}
void interclaseaza(int s,int d,int m)
{
int i=s,j=m+1,k=1,v[nmax];
while(i<=m && j<=d)
{
if(V[i]<V[j]) {v[k]=V[i];i++;}
else {v[k]=V[j];j++;}
k++;
}
while(i<=m) {v[k]=V[i];i++;k++;}
while(j<=d) {v[k]=V[j];j++;k++;}
for(k=1,i=s;i<=d;k++,i++) V[i]=v[k];
}
void mergesort(int s,int d)
{
int m;
if(s<d)
{
m=(s+d)/2;
mergesort(s,m);
mergesort(m+1,d);
interclaseaza(s,d,m);
}
}
int main()
{
cit();
mergesort(1,N);
afis();
in.close();out.close();return 0;
}