Pagini recente » Cod sursa (job #2220997) | Istoria paginii utilizator/markus243 | Cod sursa (job #895737) | Istoria paginii runda/antr4 | Cod sursa (job #1879847)
#include <fstream>
using namespace std;
fstream in ("algsort.in");
ofstream out ("algsort.out");
int a[500010],i,n,b[500010];
void inter (int st,int mij,int dr){
int i,j,k,t;
for(i=st;i<=dr;i++)
b[i]=a[i];
i=st; j=mij+1; k=st-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);
inter(st,mij,dr);
}
}
int main()
{
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;
}