Pagini recente » Cod sursa (job #2098974) | Cod sursa (job #1734027) | Cod sursa (job #1762834) | Cod sursa (job #2892289) | Cod sursa (job #2080912)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("algsort.in");
ofstream out ("algsort.out");
const int N=500001;
int v[N],i,n,Q[N];
void mergesort(int st, int dr)
{
int i,j,k;
if(st == dr)
return;
int mij = (st+dr) / 2;
mergesort(st, mij);
mergesort(mij+1, dr);
/// a[] = v[st, mij]
/// b[] = v[mij+1, dr]
i=st; j=mij+1; k=1;
while (i<=mij && j<=dr)
if (v[i]<=v[j]) Q[k++]=v[i++];
else Q[k++]=v[j++];
while (i<=mij) Q[k++]=v[i++];
while (j<=dr) Q[k++]=v[j++];
for (i=st;i<=dr;++i) v[i]=Q[i-st+1];
}
int main()
{
in>>n;
for (i=1;i<=n;++i) in>>v[i];
mergesort(1,n);
for(i=1; i<=n; ++i)
out<<v[i]<<" ";
return 0;
}