Con
mucha frecuencia, los programadores trabajan con grandes cantidades de datos
almacenados en arrays y registros, por lo que será necesario determinar
si un array contiene un valor que coincida con un cierto valor clave.
El proceso de encontrar un elemento específico de un
array
se
denomina búsqueda. En esta sección se examinarán dos técnicas de búsqueda:
lineal o secuencial, la técnica más sencilla, y binaria o dicotómica,
la más eficiente.
Búsqueda secuencial
La
búsqueda secuencial busca un elemento de una lista utilizando un valor destino
llamado clave.
En
una búsqueda secuencial (a veces llamada búsqueda lineal), los
elementos de una lista o vector se exploran (se examinan) en secuencia, uno
después de otro. La búsqueda secuencial es necesaria, por ejemplo, si se desea
encontrar a la persona cuyo número de teléfono es 958-220000 en un directorio o
listado telefónico de su ciudad. Los directorios de teléfonos están organizados
alfabéticamente por el nombre del abonado en lugar de por números de teléfono,
de modo que deben explorarse todos los números, uno después de otro, esperando
encontrar el número 958-220000.
El
algoritmo de búsqueda secuencial compara cada elemento del array con la clave
de búsqueda. Dado que el array no está en un orden prefijado, es
probable que el elemento a buscar pueda ser el primer elemento, el último
elemento o cualquier otro. De promedio, al menos, el programa tendrá que
comparar la clave de búsqueda con la mitad de los elementos del array.
El método de búsqueda lineal funcionará bien con arrays pequeños o no
ordenados.
Búsqueda binaria
La
búsqueda secuencial se aplica a cualquier lista. Si la lista está ordenada, la búsqueda
binaria proporciona una técnica de búsqueda mejorada. Una búsqueda binaria
típica es la búsqueda de una palabra en un diccionario. Dada la palabra,
se abre el libro cerca del principio, del centro o del final dependiendo
de la primera letra de la palabra que busca. Se puede tener suerte y acertar
con la página correcta pero, normalmente, no será así y el lector se mueve
a la página anterior o posterior del libro. Por ejemplo, si la palabra
comienza con "J" y se está en la "L" se mueve uno hacia
atrás. El proceso continúa hasta que se encuentra la página buscada o hasta que
se descubre que la palabra no está en la lista.
Una
idea similar se aplica en la búsqueda en una lista ordenada. Se sitúa la
lectura en el centro de la lista y se comprueba si nuestra clave coincide con
el valor del elemento central. Si no se encuentra el valor de la clave, se sitúa
uno en la mitad inferior o superior del elemento central de la lista. En
general, si los datos de la lista están ordenados, se puede utilizar esa
información para acortar el tiempo de búsqueda.
0 comentarios:
Publicar un comentario