|    
			
				03/05/2010, 16:29
			
			
			  | 
  |   |  |  |  |  Fecha de Ingreso: abril-2009 
						Mensajes: 54
					 Antigüedad: 16 años, 6 meses Puntos: 0 |  | 
  |  Respuesta: mergesort errores  
  #include<stdio.h>#include<stdlib.h>
 #include<time.h>
 #include<string.h>
 
 int merge(int a[], int low, int high, int mid)
 {
 int i, j, k, c[50];
 i=low;
 j=mid+1;
 k=low;
 while((i<=mid)&&(j<=high))
 {
 if(a[i]<a[j])
 {
 c[k]=a[i];
 k++;
 i++;
 }
 else
 {
 c[k]=a[j];
 k++;
 j++;
 }
 }
 
 while(i<=mid)
 {
 c[k]=a[i];
 k++;
 i++;
 }
 
 while(j<=high)
 {
 c[k]=a[j];
 k++;
 j++;
 }
 
 for(i=low;i<k;i++)
 {
 a[i]=c[i];
 }
 }
 
 int *mergesort(int a[], int low, int high)
 {
 int mid;
 
 if(low<high)
 {
 mid=(low+high)/2;
 mergesort(a,low,mid);
 mergesort(a,mid+1,high);
 merge(a,low,high,mid);
 }
 if(high==low)
 {
 return a;
 }
 return(0);
 }
 
 
 int main ()
 {
 float total,inicio, final;
 inicio=clock();
 
 FILE *ofp, *ifp;
 
 ifp = fopen("aleatorio.txt","r");
 int N, i;
 
 fscanf(ifp,"%i", &N);
 int d[N];
 int *j;
 for(i=0;i<N;i++)
 {
 fscanf(ifp,"%i", &d[i]);
 }
 
 ofp = fopen("merge_dec.txt","w");
 int * temp = (int *)malloc(sizeof(int)*(N));
 j = mergesort(d, 0, N);
 for(i=0;i<N;i++)
 {
 fprintf(ofp,"%i\n",d[i]);
 }
 
 
 fclose(ofp);
 fclose(ifp);
 
 final=clock();
 total=(final-inicio)/(double) CLOCKS_PER_SEC;
 printf("%f\n",total);
 
 return 0;
 }
 
 
 
 ARREGLE UN POCO MAS EL CODIGO COMPILA, PERO ME ARROJA
 Fallo de segmentación (`core' generado) :(
 
 tal vez sea un error en los punteros :/ ya me tiene sin neuronas el codigo. una ayudita porfa .
     |