Pagini recente » Cod sursa (job #352680) | Cod sursa (job #1453752) | Cod sursa (job #1043464) | Cod sursa (job #22692) | Cod sursa (job #2064123)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500000];
void merge1(int a[],int p,int mid,int q){
int i,j,k,st[250000],dr[250000];
int n1=mid-p+1,n2=q-mid;
for (i=0;i<n1;i++)
st[i]=a[p+i];
for (j=0;j<n2;j++)
dr[j]=a[mid+1+j];
i=0;
j=0;
k=p;
while(i<n1&&j<n2){
if(st[i]<=dr[j]){
a[k]=st[i];
++i;}
else {a[k]=dr[j];
++j;}
++k;
}
while(i<n1){
a[k]=st[i];
++i;++k;
}
while(j<n2){
a[k]=dr[j];
++j;++k;
}
}
void mergesort(int a[],int p,int q){
if(p<q){
int mid=(p+q)/2;
mergesort(a,p,mid);
mergesort(a,mid+1,q);
merge1(a,p,mid,q);
}
}
int main()
{
int n,i;
f>>n;
for(i=0;i<n;i++)
f>>a[i];
mergesort(a,0,n-1);
for(i=0;i<n;i++)g<<a[i]<<" ";
return 0;
}