Pagini recente » Cod sursa (job #1488629) | Cod sursa (job #398709) | Cod sursa (job #3259532) | Cod sursa (job #2499789) | Cod sursa (job #1016465)
#include <iostream>
#include <fstream>
using namespace std;
int a[500001],n;
ifstream f("algsort.in");
ofstream g("algsort.out");
void sort(int p,int q){
int m;
if(a[p]>a[q]){
m=a[p];
a[p]=a[q];
a[q]=m;
}
}
void interc(int p,int q,int m){
int b[500001],i,j,k;
i=p;
j=m+1;
k=1;
while(i<=m && j<=q)
if(a[i] <= a[j]){
b[k]=a[i];
i++;
k++;
}
else{
b[k]=a[j];
j++;
k++;
}
if(i<=m)
for(j=i;j<=m;j++){
b[k]=a[j];
k++;
}
else
for(i=j;i<=q;j++){
b[k]=a[i];
k++;
}
k=1;
for(i=p;i<=q;i++){
a[i]=b[k];
k++;
}
}
void divimp(int p,int q){
if((q-p) <= 1) sort(p,q);
else{
divimp(p,(p+q)/2);
divimp((p+q)/2+1,q);
interc(p,q,(p+q)/2);
}
}
int main(){
int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
divimp(1,n);
for(i=1;i<=n;i++)
g<<a[i]<<" ";
f.close();
g.close();
return 0;
}