Pagini recente » Cod sursa (job #1708872) | Cod sursa (job #2564690) | Cod sursa (job #3152904) | Cod sursa (job #1866799) | Cod sursa (job #1042380)
#include<fstream>
void mergesort( int a[],unsigned int m,unsigned int ls,unsigned int ld)
{ unsigned int i,j,k,ii,b[100];
int u[100];
i=0; j=ls;
while(j<=m) //copiem prima jumatate a vectorului a in vectorul b
{ b[i]=a[j];
i++;
j++;
}
ii=i;
k=ls;
i=0;
while(j<=ld && k<j && i<=ii) //copiem cel mai mare element la fiecare pas
if(b[i]<=a[j])
{ a[k]=b[i];
k++;
i++;
}
else
{ a[k]=a[j];
k++;
j++;
}
while(k<j) // daca mai raman elemente in una din jumatati,le copiem
{ a[k]=b[i];
k++;
i++;
}
}
void merge(int v[],unsigned int ls,unsigned int ld)
{ unsigned int m;
if(ls<ld)
{ m=(ls+ld)/2;
merge(v,ls,m);
merge(v,m+1,ld);
mergesort(v,m,ls,ld);
}
}
int main ()
{ long int n,i;
int v[500000];
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
merge(v,1,n);
for(i=1;i<=n;i++)
g<<v[i]<<" ";
return 0;
}