Pagini recente » Cod sursa (job #1379259) | Cod sursa (job #1498764) | Cod sursa (job #2487167) | Cod sursa (job #1057018) | Cod sursa (job #359928)
Cod sursa(job #359928)
#include <iostream.h>
#include<math.h>
#include <fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
long int v[500003],i,n,t;
void schimb(int i,int j){
int aux;
if(v[i]>v[j]){
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}
void merge(int i,int j){
int k=0,x[50];
int m=(i+j)/2;
int li=i,lj=m+1;
while(li<=m && lj<=j)
if(v[li]<v[lj])
x[++k]=v[li++];
else x[++k]=v[lj++];
if(li<=m) for(t=li;t<=m;t++)
x[++k]=v[t];
else for(t=lj;t<=j;t++)
x[++k]=v[t];
k=0;
for(t=i;t<=j;t++)
v[t]=x[++k];
}
void divide(int i,int j){
int m=(i+j)/2;
if(abs(i-j)<=1)
schimb(i,j);
else{divide(i,m);
divide(m+1,j);
merge(i,j);
}
}
int main(){
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
divide(1,n);
for(i=1;i<=n;i++)
g<<v[i]<<'\n';
return 0;
}