Pagini recente » Cod sursa (job #905801) | Cod sursa (job #346287) | Cod sursa (job #3259587) | Cod sursa (job #3195734) | Cod sursa (job #748354)
Cod sursa(job #748354)
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500000],b[500000],n;
void citire(){
f>>n;
for(int i=0;i<n;i++)
f>>a[i];
}
void merge(int i,int i1,int j,int j1){
int k=-1,v=i;
while(i<=i1 && j<=j1){
if(a[i]>a[j])
b[++k]=a[j++];
else
b[++k]=a[i++];
}
while(i<=i1)
b[++k]=a[i++];
while(j<=j1)
b[++k]=a[j++];
for(int l=0;l<=k;l++)
a[l+v]=b[l];
}
void merge_sort(int i,int j){
if((i+1)==j)
a[i]=a[j]^a[i]^(a[j]=a[i]);
if((i+1)<j){
int m=(i+j)/2;
merge_sort(i,m);
merge_sort(m+1,j);
merge(i,m,m+1,j);
}
}
void afisare(){
for(int i=0;i<n;i++)
g<<a[i]<<" ";
}
int main(){
citire();
merge_sort(0,n-1);
afisare();
return 0;
}