Pagini recente » Cod sursa (job #88120) | Cod sursa (job #2535694) | Cod sursa (job #1757479) | Cod sursa (job #1071863) | Cod sursa (job #544343)
Cod sursa(job #544343)
#include<stdio.h>
#include<stdlib.h>
void merge (int p,int q,int r, int *x){
int i,j,k;
int *temp;
temp = calloc((r-p+1),sizeof(int));
k = 0;
i = p;
j = q + 1;
while(i <= q && j <= r)
if(x[i] <= x[j])
temp[k++] = x[i++];
else
temp[k++] = x[j++];
while(i <= q)
temp[k++] = x[i++];
while(j <= r)
temp[k++] = x[j++];
for(i = p ; i <= r ; i++ ){
x[i] = temp[i - p];
}
free(temp);
}
void ms(int i, int j, int *x ){
int k;
if(i < j) {
k = (i + j) / 2;
ms(i, k, x);
ms(k+1, j, x);
merge(i, k, j, x);
}
}
int main() {
int i, *x, n;
FILE *s = fopen("algsort.in", "r");
FILE *d = fopen("algsort.out", "w");
fscanf(s,"%d", &n);
x=(int *)calloc(n,sizeof(int));
for(i = 0 ; i < n ; i++)
fscanf(s,"%d",&x[i]);
ms(0,n-1,x);
for(i = 0 ; i < n ; i++)
fprintf(d,"%d ",x[i]);
return 0;
}