Pagini recente » Cod sursa (job #1963273) | Cod sursa (job #615346) | Cod sursa (job #1470103) | Cod sursa (job #2682985) | Cod sursa (job #419415)
Cod sursa(job #419415)
#include <iostream.h>
#include <fstream.h>
#include <math.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
long long v[500000],i,n,m,t,x[51],li,lj,k;
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){
k=0;
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){
if(abs(i-j)<=1)
schimb(i,j);
else { m=(i+j)/2;
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]<<" ";
return 0;
f.close();
g.close();
}