Pagini recente » Cod sursa (job #2885535) | Cod sursa (job #281688) | Cod sursa (job #2549698) | Cod sursa (job #503505) | Cod sursa (job #1029156)
#include<iostream>
#include<fstream>
using namespace std;
int v[500000],r[500000];
void merge(int stg,int dr){
int i=stg, j=(stg+dr)/2+1, u=0;
if(stg!=dr){
merge(stg,(dr+stg)/2);
merge((stg+dr)/2+1,dr);
}
while(i<=(stg+dr)/2&&j<=dr){
if(v[i]<=v[j]){
r[++u]=v[i];
i++;
}
else {
r[++u]=v[j];
j++;
}
}
while(i<=(stg+dr)/2){
r[++u]=v[i];
i++;
}
while(j<=dr){
r[++u]=v[j];
j++;
}
for(i=stg;i<=dr;i++)
v[i]=r[i-stg+1];
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
merge(1,n);
for(i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}