Pagini recente » Istoria paginii utilizator/dra_solo | Cod sursa (job #2051943) | Statistici FMI Stanescu Leonard (Wyvern) | Cod sursa (job #1543175) | Cod sursa (job #1998721)
#include <fstream>
#define nMax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[nMax], aux[nMax];
void mergeSort(int st, int dr)
{
if(dr-st+1<=1)
return;
int mid=st+(dr-st)/2;
mergeSort(st, mid);
mergeSort(mid+1, dr);
int i=st, j=mid+1, poz=st-1;
while(i<=mid && j<=dr)
{
if(v[i]<=v[j])
{
aux[++poz]=v[i];
i++;
}
else
{
aux[++poz]=v[j];
j++;
}
}
for(int ii=i; ii<=mid; ii++)
aux[++poz]=v[ii];
for(int jj=j; jj<=dr; jj++)
aux[++poz]=v[jj];
for(int i=st; i<=dr; i++)
v[i]=aux[i];
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
mergeSort(1, n);
for(int i=1; i<=n; i++)
fout<<v[i]<<" ";
}