Pagini recente » Cod sursa (job #1499812) | Cod sursa (job #269064) | Cod sursa (job #1406563) | Scrie articole | Cod sursa (job #893577)
Cod sursa(job #893577)
#include<stdio.h>
#define DIM 500010
FILE *fin=fopen("algsort.in","r");
FILE *fout=fopen("algsort.out","w");
int v[DIM], n, a[DIM];
void interclasare(int p, int u, int m){
int nr = p-1;
int i,j;
for(i = p, j = m+1 ; i<=m && j<=u; ){
if(v[i]<v[j]){
a[++nr]=v[i++];
}
else{
a[++nr]=v[j++];
}
}
for(; i<=m; i++){
a[++nr]=v[i];
}
for(; j<=u; j++){
a[++nr]=v[j];
}
for(i = p; i<=u; i++){
v[i]=a[i];
}
}
void merge_sort(int p , int u ){
if(u-p>=1){
int m = (p+u)/2;
merge_sort(p,m);
merge_sort(m+1,u);
interclasare(p,u,m);
}
}
int main(){
fscanf(fin,"%d",&n);
for(int i = 1; i <= n; i++){
fscanf(fin,"%d",&v[i]);
}
merge_sort(1,n);
for(int i = 1; i<=n; i++){
fprintf(fout, "%d ", v[i]);
}
return 0;
}