Cod sursa(job #544343)

Utilizator crouchHotea Cristian crouch Data 1 martie 2011 15:04:42
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#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;
}