Pagini recente » Cod sursa (job #3179602) | Cod sursa (job #1558762) | Cod sursa (job #1543110) | Cod sursa (job #683194) | Cod sursa (job #1833850)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
void interclasare(long v[], long a, long m, long b)
{
long i=a,j=m+1,k=0,r[b-a+1],t;
while(i<=m && j<=b){
if(v[i]<v[j])
r[++k]=v[i++];
else if(v[j]<v[i])
r[++k]=v[j++];
else{
r[++k]=v[i++];
r[++k]=v[j++];
}
}
for(t=i;t<=m;t++)
r[++k]=v[i++];
for(t=j;t<=b;t++)
r[++k]=v[j++];
k=1;
for(t=a;t<=b;t++)
v[t]=r[k++];
}
void merge_sort(long v[], long st, long dr)
{
long m=(dr+st)/2;
if(st<dr){
merge_sort(v,st,m);
merge_sort(v,m+1,dr);
interclasare(v,st,m,dr);
}
}
int main()
{
long n,i;
cin>>n;
long v[n];
for(i=1;i<=n;i++)
cin>>v[i];
merge_sort(v,1,n);
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
return 0;
}