2. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
2
Índice Temático
INTRODUCCIÓN ................................................................................................................ 3
BÚSQUEDA LINEAL ........................................................................................................... 3
Ventajas y Limitaciones ................................................................................................ 5
BÚSQUEDA BINARIA O DICOTÓMICA............................................................................... 5
Ventajas ........................................................................................................................ 8
COMPARACIÓN................................................................................................................. 8
BIBLIOGRAFIAS Y FUENTES CONSULTADAS...................................................................... 9
3. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
3
INTRODUCCIÓN
Con frecuencia los programadores trabajan con grandes
cantidades de datos almacenados en estructuras de datos como
arrays y registros, es muy común entonces, encontrarse con la
necesidad de determinar, por ejemplo, si un array contiene un
dato determinado. El proceso de encontrar un elemento
específico en una estructura se denomina búsqueda.
La búsqueda de un elemento en una estructura de datos es una de las
operaciones más importantes en el procesamiento de la información y permite la
recuperación de datos previamente almacenados.
En este documento veremos dos estrategias que son las más usadas para
encontrar elementos en una estructura de datos: búsqueda lineal o secuencial, que
se caracteriza por ser la técnica más sencilla, y búsqueda binaria o dicotómica,
que es la técnica más eficiente.
BÚSQUEDA LINEAL
En una búsqueda lineal o secuencial, se analizan los elementos de una colección
de uno en uno hasta que se encuentra el valor deseado. (1)
Ésta técnica es probablemente la más sencilla de implementar e intuitiva. Consiste
en buscar de manera secuencial un elemento, en preguntar si el elemento buscado
es igual al primero, segundo, tercero y así sucesivamente hasta encontrar el dato
deseado.
La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la
persona cuyo número de teléfono es 842-7200 en una guía o listado telefónico de
una ciudad. Las guías de teléfonos están organizadas 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 842-7200.
4. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
4
Veamos un ejemplo:
Supongamos que el DNI buscado es el número 38.456.851. Como vemos en el
siguiente ejemplo, se recorre el arreglo desde la posición Nº 1 y se va comparando
el valor del dato ingresado con el valor del DNI ubicado en la posición que ocupa en
el array, esta comparación se realiza de manera secuencial hasta que el valor
ingresado coincida con el almacenado en la estructura, cuando esto último ocurre
hemos encontrado el dato. En nuestro caso, al encontrar el estudiante con DNI
38.456.851 podemos ver que vota en la mesa numero 08.
Datos
36.659.684
12
40.368.965
04
…..
38.456.851
08
40.397.235
04
42.379.654
03
DNI Nº Mesa DNI Nº Mesa DNI Nº
Mesa
DNI Nº
Mesa
DNI Nº
MesaPosición 1 2 …… 698 699 700
Dado un array que contiene los datos de los 700 estudiantes
habilitados para votar en las elecciones del Centro de Estudiantes.
Se requiere:
Ingresar el número de documento del estudiante y mostrar en que
mesa vota.
Compara
DNI
38.456.851
con
36.659.684
no coincide
Compara
DNI
38.456.851
con
40.368.965
no coincide
Compara DNI
38.456.851
con 38.456.851
SI COINCIDE
DATO ENCONTRADO
5. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
5
Ventajas y Limitaciones
Este tipo de búsqueda tiene la ventaja de tener una fácil programación de su
algoritmo.
Por otro lado, los elementos del array pueden o no estar ordenados, ya que al
comparar de uno en uno los elementos, no importa su orden para realizar la
búsqueda, salvo para el tiempo de ejecución.
Si el elemento que se está buscando se encuentra al inicio del array, este tiempo
será muy corto, si se encuentra al final de la estructura, el tiempo de ejecución
será más largo, pero si el elemento que se desea buscar, no se encuentra en la
estructura de datos, se deberá recorrer todo el array para darse cuenta no se
encuentra almacenado en el mismo. Si a esto se le suma, que la cantidad de
elementos pueden ser cientos o miles, el tiempo de ejecución será
considerablemente más lento.
BÚSQUEDA BINARIA O DICOTÓMICA
Si la estructura está ordenada, la búsqueda binaria o dicotómica 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 del primer apellido o de la palabra que busca. Se
puede tener suerte y acertar con la página correcta; pero, normalmente, no será
Ahora bien, en base a lo visto hasta aquí,
¿Es posible mejorar la estrategia de
búsqueda?
6. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
6
así y se mueve el lector a la página anterior o posterior del diccionario. 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. (2)
A diferencia de la Búsqueda Secuencial, aquí el número de comparaciones no se
comporta en forma lineal, sino que se realizan los siguientes pasos:
Se selecciona el elemento del centro del array.
Si el valor a buscar no coincide con el elemento seleccionado y es
mayor que él, se continúa la búsqueda en la segunda mitad del
array.
Si, por el contrario, el valor a buscar es menor que el valor del
elemento seleccionado, la búsqueda continúa en la primera parte del
array.
En ambos casos, se halla de nuevo el elemento central,
correspondiente al nuevo intervalo de búsqueda, repitiéndose el
ciclo.
El proceso se repite hasta que se encuentra el valor a buscar, o bien
hasta que el intervalo de búsqueda sea nulo, lo que querrá decir que
el elemento buscado no figura en el array.
Veamos el siguiente ejemplo:
Dado el un array de 12 elementos con sus correspondientes datos:
Se requiere ingresar un valor y buscarlo en el arreglo.
7. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
7
Supongamos que el valor a buscar es el numero 45.
LI (Límite inferior) – Contiene la posición donde inicia el intervalo de búsqueda
LS (Límite superior) – Contiene la posición donde finaliza el intervalo de
búsqueda.
i= (LS+LI)/2
LI=1 LS=12 i=6
Se compara valor buscado con valor 6° elemento:
45 > 31, se descarta la primera mitad del array, luego se ajusta la variable
LI = (i + 1)
LI=7 LS=12 i=9
Se compara valor buscado con valor 9° elemento:
45 < 60, se descarta la segunda mitad del array, luego se ajusta la variable
LS = (i – 1)
LI=7 LS=8 i=7
Se compara valor buscado con valor 7° elemento:
45 > 33 se descarta la primera mitad del array, luego se ajusta la variable
LI = (i + 1)
LI=8 LS=8 i=8
Se compara valor buscado con valor 8° elemento:
45 = 45
Dato 5 12 18 21 27 31 33 45 60 62 68 72
Posición 1 2 3 4 5 6 7 8 9 10 11 12
DATO ENCONTADO en la posición 8 del array.
8. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
8
Ventajas
Esta estrategia reduce el tiempo de búsqueda considerablemente, ya que
disminuye exponencialmente el número de iteraciones necesarias.
Es altamente recomendada para buscar en arrays de gran tamaño.
COMPARACIÓN
Una vez enunciadas estas dos estrategias de búsqueda de datos, es interesante
analizar la siguiente animación donde podemos ver el funcionamiento de ambas.
Como podemos observar, los datos se encuentran ordenados (ya que de no ser
así no se podría aplicar la búsqueda binaria).
Animación 1 Comparación de Búsquedas [Ver animación]
Queda de manifiesto que a misma cantidad de elementos, la velocidad y la
cantidad de comparaciones realizadas dejan en evidencia la eficiencia de una
estrategia de búsqueda por sobre la otra.
9. Lic. En Sistemas – FCAD - UNER | Búsqueda de datos – Unidad VI- Algoritmos y
Programación 2016
9
BIBLIOGRAFIAS Y FUENTES CONSULTADAS
1. Arias, Ángel. Aprende sobre la Ingeniería de Software: 2ª Edición. s.l. : IT Campus Academy,
2015. 1517706106, 9781517706104.
2. Joyanes Aguilar, Luis y Zahonero Martínez, Ignacio. ALGORITMOS Y ESTRUCTURAS DE
DATOS. UNA PERSPECTIVA EN C. s.l. : McGraw-Hill, 2004. 844814077x.
3. Yabar, Ronny. Imaginemos un mundo libre. [En línea] 09 de Julio de 2009. [Citado el: 24 de
Octubre de 2016.] https://ronnyml.wordpress.com/2009/07/09/busqueda-lineal-y-busqueda-
binaria/
4. Facultad de Ingenieria Universidad de la República - Uruguay. Principios de Programación.
[En línea] [Citado el:24 de Ocrubre de 2016.]
https://www.fing.edu.uy/tecnoinf/mvd/cursos/prinprog/material/teo/prinprog-teorico11.pdf