sábado, 8 de febrero de 2014

Ordenación y búsqueda





Se trata de rutinas que organizan una lista en cierto orden. Veamos el ejemplo del algoritmo más sencillo llamado Ordenación burbuja:
#include <stdio.h>
 
int main()
{
  int n, c, d, swap;
 
  printf("Entre el número de elementos\n");
  scanf("%d", &n);

  int array[n];
 
  printf("Entre %d enteros\n", n);
 
  for (c = 0; c < n; c++)
    scanf("%d", &array[c]);
 
  for (c = 0 ; c < ( n - 1 ); c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (array[d] > array[d+1])
      {
        swap       = array[d];
        array[d]   = array[d+1];
        array[d+1] = swap;
      }
    }
  }
 
  printf("Lista ordenada en orden ascendente:\n");
 
  for ( c = 0 ; c < n ; c++ )
     printf("%d\n", array[c]);
 
  return 0;
}


Ejercicios:
  • ¿Cómo invertimos el orden?
  • Mejore el algoritmo anterior o consulte e implemente un algoritmo de ordenación mejor.
  • Genere un arreglo de números aleatorios y pruebe su algoritmo con él.

Búsqueda

El algoritmo más obvio es comenzar por el principio del arreglo y "caminar" a través de él hasta encontrar el dato deseado:
#include <stdio.h>
 
int main()
{
   int search, c, n;
 
   printf("Ingrese la cantidad de números\n");
   scanf("%d",&n);

   int array[n];
 
   printf("Ingrese %d enteros\n", n);
 
   for (c = 0; c < n; c++)
      scanf("%d", &array[c]);
 
   printf("Ingrese el número a buscar\n");
   scanf("%d", &search);
 
   for (c = 0; c < n; c++)
   {
      if (array[c] == search)     /* if el elemento fue encontrado */
      {
         printf("%d Está en la posición %d.\n", search, c+1);
         break;
      }
   }
   if (c == n)
      printf("%d no se encuentra en el arreglo.\n", search);
 
   return 0;
}


Ejercicios
  • Mejore o implemente un nuevo algoritmo de búsqueda y pruébelo con un arreglo de números aleatorios.
  • ¿Mejoran los tiempos si el arreglo se encuentra previamente ordenado?

No hay comentarios:

Publicar un comentario