Pagini recente » Cod sursa (job #2636830) | Cod sursa (job #405624) | Cod sursa (job #2747752) | Cod sursa (job #838314) | Cod sursa (job #1023611)
#include<fstream>
using namespace std;
int v[500001],w[500001];
void merge(int stg,int dr)
{
if(stg!=dr){merge(stg,(dr+stg)/2);merge((stg+dr)/2+1,dr);}
int i=stg,j=(stg+dr)/2+1,u=0;
while(i<=(stg+dr)/2&&j<=dr)
{
if(v[i]<=v[j]){w[++u]=v[i];i++;}
else {w[++u]=v[j];j++;}
}
while(i<=(stg+dr)/2){w[++u]=v[i];i++;}
while(j<=dr){w[++u]=v[j];j++;}
for(i=stg;i<=dr;i++)
v[i]=w[i-stg+1];
}
int main()
{
ifstream fcin("algsort.in");
ofstream fcout("algsort.out");
int n,i;
fcin>>n;
for(i=1;i<=n;i++)
fcin>>v[i];
merge(1,n);
for(i=1;i<=n;i++)
fcout<<v[i]<<' ';
fcout<<'\n';
return 0;
}