Pagini recente » Cod sursa (job #2332287) | Cod sursa (job #264925) | Cod sursa (job #24064) | Cod sursa (job #3174328) | Cod sursa (job #656006)
Cod sursa(job #656006)
#include<iostream>
#include<fstream>
using namespace std;
int n,a[500001],b[500001];
void merge_sort(int ls,int ld){
int mij=(ls+ld)/2;
int nr=ls-1,l2=mij+1,l1=ls;
if(ls>=ld)return;
merge_sort(ls,mij);
merge_sort(mij+1,ld);
while(l1<=mij&&l2<=ld){
if(a[l1]<=a[l2]){
nr++;
b[nr]=a[l1];
l1++;
}
else{
nr++;
b[nr]=a[l2];
l2++;
}
}
if(l1<=mij)
for(int i=l1;i<=mij;i++)
b[++nr]=a[i];
else
for(int i=l2;i<=ld;i++)
b[++nr]=a[i];
for(int i=ls;i<=ld;i++)
a[i]=b[i];
}
int main(){
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
merge_sort(1,n);
for(int i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();
g.close();
return 0;
}