Pagini recente » Cod sursa (job #1323903) | Cod sursa (job #2530483) | Cod sursa (job #2970207) | Cod sursa (job #2962688) | Cod sursa (job #2082211)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int a[500001],N;
void inter(int st,int dr,int mij)
{
int i,j,k,b[100];
i=st;
j=mij+1;
k=1;
while(i<=mij && j<=dr)
{
if(a[i]<a[j])
{
b[k]=a[i];
++i;
}
else
{
b[k]=a[j];
++j;
}
++k;
}
if(i<=mij)
while(i<=mij)
{
b[k]=a[i];
++i;
++k;
}
else if(j<=dr)
while(j<=dr)
{
b[k]=a[j];
++j;
++k;
}
for(k=1,i=st;i<=dr;++k,++i)
a[i]=b[k];
}
void MergeSort(int st,int dr)
{
if(st<dr)
{
int mij=(st+dr)/2;
MergeSort(st,mij);
MergeSort(mij+1,dr);
inter(st,dr,mij);
}
}
int main()
{
in>>N;
for(int i=1;i<=N;++i)
in>>a[i];
MergeSort(1,N);
for(int i=1;i<=N;++i)
out<<a[i]<<' ';
return 0;
}