Pagini recente » Cod sursa (job #156835) | Cod sursa (job #1902050) | Cod sursa (job #2562041) | Cod sursa (job #1339619) | Cod sursa (job #1684824)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
void citire(int &n,int x[]){
cin>>n;
int i;
for(i=1;i<=n;i++)
cin>>x[i];
}
void afisare(int n,int x[]){
int i;
for(i=1;i<=n;i++)
cout<<x[i]<<' ';
}
void Merge(int n,int x[],int li,int ls,int mij){
int i,j,n1=mij-li+1,n2=ls-mij;
int a[500005],b[500005];
for(i=1;i<=n1;i++)
a[i]=x[li+i-1];
for(i=1;i<=n2;i++)
b[i]=x[mij+i];
i=j=1;
int k=li;
while(i<=n1&&j<=n2)
if(a[i]<=b[j])
x[k++]=a[i++];
else
x[k++]=b[j++];
while(i<=n1)
x[k++]=a[i++];
while(j<=n2)
x[k++]=b[j++];
}
void MergeSort(int n,int x[],int li,int ls){
if(li<ls){
int mij=(li+ls)/2;
MergeSort(n,x,li,mij);
MergeSort(n,x,mij+1,ls);
Merge(n,x,li,ls,mij);
}
}
int main(){
int n,v[500005];
citire(n,v);
MergeSort(n,v,1,n);
afisare(n,v);
return 0;
}