Pagini recente » Cod sursa (job #263557) | Cod sursa (job #1677350) | Cod sursa (job #1144099) | Cod sursa (job #186560) | Cod sursa (job #3254717)
///https://infoarena.ro/problema/algsort
///MergeSort
#include <fstream>
#define DIM 500001
using namespace std;
ifstream fin ("algsort.in");
ofstream fout("algsort.out");
int n,i,v[DIM];
int t[DIM];
void interclasare(int st, int mij, int dr)
{
int i=st;
int j=mij+1;
int k=st-1;
while(i<=mij && j<=dr)
if(v[i]<=v[j])
t[++k]=v[i++];
else
t[++k]=v[j++];
while(i<=mij)
t[++k]=v[i++];
while(j<=dr)
t[++k]=v[j++];
for(i=st;i<=dr;i++)
v[i]=t[i];
}
void mergeSort(int st, int dr)
{
if(st<dr)
{
int mij=(st+dr)/2;
mergeSort(st, mij);
mergeSort(mij+1, dr);
interclasare(st, mij, dr);
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
mergeSort(1,n);
for(i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}