Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con insertionsort SOLUCIONADO

Estas en el tema de problema con insertionsort SOLUCIONADO en el foro de C/C++ en Foros del Web. necesito ayuda estoy trabajandolo con archivos, el archivo que usa para lectura tiene la siguiente estructura donde el primer dato es el N total del ...
  #1 (permalink)  
Antiguo 04/05/2010, 13:54
Avatar de extremoo  
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
problema con insertionsort SOLUCIONADO

necesito ayuda estoy trabajandolo con archivos, el archivo que usa para lectura tiene la siguiente estructura donde el primer dato es el N total del arr

1000
325
45
85
985
...
hasta la linea 1001 ya que la primera linea es el tamaño total.
______________________________________________

el programa compila perfectamente solo que me esta arrojando en el archivo creado

1
1
1
...
1
128
128
128
128
128
383
422

No esta ordenando los numeros solo me arroja 1 y casi al final 128, 383 y 422.
*el fscanf cuando abro el archivo es para guardar el tamaño total del arr en este caso 1000*


el codigo es el siguiente:

Código C:
Ver original
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. #include<string.h>
  5.  
  6.  
  7. int main()
  8. {
  9.  
  10.   float total,inicio, final;
  11.   inicio=clock();
  12.   FILE *ARCH, *ARCHI;
  13.  
  14.     int N, i;
  15.     ARCH = fopen("aleatorio.txt","r");
  16.     fscanf(ARCH,"%i", &N);
  17.     int d[N];
  18.    
  19.     i=0;
  20.     for(i=0;i<N;i++)
  21.     {
  22.       fscanf(ARCH,"%i", &d[i]);
  23.     }
  24.  
  25.     ARCHI = fopen("insertionsort.txt","w");
  26.   int length;
  27.   length=N;
  28.  
  29.   int key,a, j;
  30.   for(j=1 ;j<length; j++)
  31.   {
  32.      key=d[j];
  33.      a=j-1;
  34.      while(d[a]>key && a>=0)
  35.      {
  36.          d[a]=d[a+1];
  37.          a--;
  38.      }
  39.          d[a+1]=key;
  40.   }
  41.            
  42.   for(a=0;a<length;a++)
  43.     {
  44.       fprintf(ARCHI,"%i \n",d[a]);
  45.     }
  46.  
  47.  
  48.   final=clock();
  49.   total=(final-inicio)/(double) CLOCKS_PER_SEC;
  50.   printf("%f\n",total);
  51.  
  52.   fclose(ARCH);  
  53.   fclose(ARCHI);
  54. return 0;
  55. }
  #2 (permalink)  
Antiguo 04/05/2010, 18:38
Avatar de extremoo  
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
Respuesta: problema con insertionsort

me parece que el error esta ahi e modificado de varias meneras esto y me a arrojado numeros pero no ordenados quiza estoy saliendome del arreglo alguien que me pueda ayudar por favor

Código C:
Ver original
  1. int key,a, j;
  2.   for(j=1 ;j<length; j++)
  3.   {
  4.      key=d[j];
  5.      a=j-1;
  6.      while(d[a]>key && a>0)
  7.      {
  8.          d[a]=d[a+1];
  9.          a=a-1;
  10.      }
  11.          d[a+1]=key;
  12.   }

Etiquetas: solucionado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:30.