Pagini recente » Cod sursa (job #217203) | Cod sursa (job #79257) | Cod sursa (job #931411) | Cod sursa (job #429142) | Cod sursa (job #1652299)
#include<iostream>
#include<fstream>
#include <limits>
using namespace std;
int int_max = std::numeric_limits<int>::max();
ifstream f("algsort.in");
ofstream g("algsort.out");
void MERGE(int a[],int p,int mid,int q)
{
int i,j,n1,n2;
cout<<"Entered merge"<<endl;
n1=mid-p+1;
n2=q-mid;
int L[n1+1],R[n2+1];
for(i=1;i<=n1;i++)
L[i]=a[p+i-1];
for(j=1;j<=n2;j++)
R[j]=a[mid+j];
L[n1+1]=int_max;
R[n2+1]=int_max;
i=j=1;
for(int k=p;k<=q;k++)
if(L[i]<=R[j])
{
a[k]=L[i];
i++;
}
else{a[k]=R[j];
j++;
}
}
void merge_sort(int a[],int p,int q)
{int mid;
if(p<q)
{
mid=(p+q)/2;
merge_sort(a,p,mid);
merge_sort(a,mid+1,q);
MERGE(a,p,mid,q);
}
}
void afisare(int a[],int n)
{
cout<<endl;
for(int i=1;i<=n;i++)
//cout<<a[i]<<" ";
g<<a[i]<<" ";
}
int main()
{
int n,i;
//cout<<int_max;
f>>n;
int x[n];
for(i=1;i<=n;i++)
f>>x[i];
//afisare(x,n);
merge_sort(x,1,n);
afisare(x,n);
return 0;
}