Métodos de Búsqueda

 

Secuencial Binaria Hash Volver

Métodos de Búsqueda

 

El método de búsqueda secuencial consiste en revisar la estructura de datos elemento por elemento hasta encontrar el dato que estamos buscando, o hasta llegar al final de la estructura de datos.

 

Normalmente cuando una función de búsqueda concluye con éxito, lo que interesa es conocer en qué posición fue encontrado el elemento buscado.

 

La búsqueda secuencial se puede aplicar a estructuras de datos ordenadas o desordenadas.

Si se aplica a una estructura desordenada y el elemento que se está buscando existe más de una vez en la estructura, el proceso de búsqueda debe continuar hasta  que se llegue al fin de la estructura.

 

Ejemplo. Si tenemos una estructura con los elementos 5, 8, 3, 2, 9, 5, 7, 0, 5, 1 y estamos buscando el número 5, el resultado de la búsqueda nos mostraría las posiciones 0, 5 y 8 y el proceso terminaría al llegar al numero 1 que es el ultimo de la lista de elementos.

 

Elementos

5

8

3

2

9

5

7

0

5

1

Posiciones

0

1

2

3

4

5

6

7

8

9

Posiciones donde

encontró el número 5

×

×

×

×

×

×

×

 

Ejercicio. Crear un programa que aplique una búsqueda secuencial de un dato dentro de un arreglo de elementos desordenados y presenta la o las posiciones donde encontró el dato.

 

En cambio con una estructura ordenada al encontrar el elemento por primera vez podemos suponer que una vez que el elemento ya no sea igual al que estamos buscando, ya no es necesario llegar hasta el fin de la estructura.

 

Ejemplo. Si tenemos la estructura anterior pero ordenada 0, 1, 2, 3, 5, 5, 5, 7, 8, 9 y estamos buscando el mismo número 5, el resultado de la búsqueda nos mostraría las posiciones  4, 5, y 6, y el proceso terminaría ya que el número 7 no es menor ni igual al que estamos buscando.

 

Elementos

0

1

2

3

5

5

5

7

8

9

Posiciones

0

1

2

3

4

5

6

7

8

9

Posiciones donde

encontró el número 5

×

×

×

×

×

 

 

 

Ejercicio para reflexionar. Crear un programa que aplique una búsqueda secuencial de un dato dentro de un arreglo de elementos ordenados y presenta la o las posiciones donde encontró el dato.

 

Ejercicio Resuelto

 

Por ejemplo dado el siguiente arreglo:

 

5

7

9

11

15

23

32

 

  • Si busco el 15, consulto todos los elementos hasta encontrarlo y averiguando así posición en la que se encuentra.

  • Si busco el 20, se revisan todos los elementos y al final debería recibir un mensaje que indique que dicho elemento no se encuentra.

Lo bueno de la búsqueda secuencial es que no requiere que el conjunto esté previamente ordenado, pero como debe revisar todos los elementos se torna muy lenta.

 

A continuación se muestra el diagrama de flujo de Búsqueda Binaria suponiendo que buscamos el valor T dentro del arreglo X[ ]:

 

A continuación se muestra un fragmento de código en C correspondiente al diagrama de flujo anterior:

int i;
float X[N];
float valor;
int Encontrado;
.
i = 0;
Encontrado = 0;

while (Encontrado == 0 && i < N)
  {
if (X[i]==valor) Encontrado = 1;
else i++;
  }

if(Encontrado==1) printf("El valor se encuentra en la posicion %i",i);
else printf("El valor no se encuentra");

 

 

Volver

 

 

*