Pagini recente » Cod sursa (job #420223) | Cod sursa (job #463561) | Cod sursa (job #1809318) | Cod sursa (job #465386) | Cod sursa (job #1879886)
#include <fstream>
using namespace std;
ifstream in ("algsort.in") ;
ofstream out ("algsort.out");
int n,a[500010], b[500010];
void interclasare(int st, int mij, int dr)
{
int i,j,k,t;
for(i=st; i<=dr; i++)
b[i]=a[i];
i=st; k=st-1; j=mij+1;
while(i<=mij && j<=dr)
if(b[i]<b[j]) a[++k]=b[i++];
else a[++k]=b[j++];
for(t=i; t<=mij; t++)
a[++k]=b[t];
for(t=j; t<=dr; t++)
a[++k]=b[t];
}
void mergesort(int st, int dr)
{
int mij;
if(st<dr)
{
mij=(st+dr)/2;
mergesort(st,mij);
mergesort(mij+1, dr);
interclasare(st,mij,dr);
}
}
int main()
{
int i;
in>>n;
for(i=1; i<=n; i++)
in>>a[i];
mergesort(1,n);
for(i=1; i<=n; i++)
out<<a[i]<<" ";
return 0;
}