Pagini recente » Cod sursa (job #397127) | Cod sursa (job #1157327) | Cod sursa (job #50422) | Cod sursa (job #2330157) | Cod sursa (job #1677995)
#include <fstream>
#define nMax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[nMax], aux[nMax];
void read()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
}
void mergesort(int st, int dr)
{
if(st==dr)
return;
int mid=st+(dr-st)/2;
mergesort(st, mid);
mergesort(mid+1, dr);
for(int ii=st, jj=mid+1, poz=st-1;ii<=mid || jj<=dr;)
{
if((v[ii]<v[jj] && ii<=mid) || jj>dr)
{
aux[++poz]=v[ii];
ii++;
}
else
{
aux[++poz]=v[jj];
jj++;
}
}
for(int i=st;i<=dr;i++)
v[i]=aux[i];
}
void write()
{
for(int i=1;i<=n;i++)
fout<<v[i]<<" ";
}
int main()
{
read();
mergesort(1, n);
write();
return 0;
}