Algoritmos Básicos de Búsqueda
I. Búsqueda
Secuencial (Sequential Search)
1.
También conocido
como la Búsqueda Lineal (Linear Search).
2.
Puede usarse con
arreglos que no estén ordenados.
3.
Consiste en buscar
un valor (la clave o key)
comparándolo secuencialmente con cada elemento del arreglo hasta que éste se
encuentre, o hasta que se llegue al final del arreglo.
4.
La existencia se
puede asegurar desde el momento que la clave es localizada, pero no podemos
asegurar la no existencia hasta no haber examinado todos los elementos del
arreglo.
5.
Es un algoritmo de
complejidad O(n) porque la cantidad
de elementos examinados en el peor de los casos es directamente proporcional al
tamaño del arreglo.
6.
Ejemplos asumiendo
el arreglo [10, 20, 30, 40, 50, 60, 70] de 7 elementos:
a.
Si se busca el 30,
se examinan los siguientes elementos: 10, 20 y 30.
b.
Si se busca el 60,
se examinan los siguientes elementos: 10, 20, 30, 40, 50 y 60.
c.
Si se busca el 25,
se examinan los siguientes elementos: 10, 20, 30, 40, 50, 60 y 70, concluyendo
que el 25 no se encuentra.
d.
Si se busca el 65,
se examinan los siguientes elementos: 10, 20, 30, 40, 50, 60 y 70, concluyendo
que el 65 no se encuentra.
II. Búsqueda
Binaria (Binary Search)
1.
Sólo puede usarse
con arreglos ordenados.
2.
Consiste en buscar
un valor (la clave) comparándolo con el elemento central del arreglo. Puede ocurrir uno de los siguientes:
a.
La clave es menor
que el elemento central: se busca la clave en la porción del arreglo que va
desde el inicio del arreglo hasta justo antes del elemento central.
b.
La clave es mayor
que el elemento central: se busca la clave en la porción del arreglo que va
desde justo después del elemento central hasta el final del arreglo.
c.
La clave es igual
al elemento central: se puede asegurar su existencia.
3.
Se revisan
porciones cada vez más pequeñas hasta que se encuentra la clave en el elemento
central o hasta que se obtenga una porción de un solo elemento. Si la clave no
se encuentra dentro de esta última porción, se deduce que la clave no se
encuentra en el arreglo.
4.
Es un algoritmo de
complejidad O(log2 n)
porque cada iteración parte a la mitad el espacio de búsqueda por lo que
progresivamente hay menos trabajo que hacer.
5.
Ejemplos asumiendo
el arreglo [10, 20, 30, 40, 50, 60, 70] de 7 elementos:
a.
Si se busca el 20,
se examinan los siguientes elementos: 40 y 20.
b.
Si se busca el 40,
se examina el siguiente elemento: 40.
c.
Si se busca el 60,
se examinan los siguientes elementos: 40 y 60.
d.
Si se busca el 5,
se examinan los siguientes elementos: 40, 20 y 10, concluyendo que el 25 no se
encuentra.
e.
Si se busca el 25,
se examinan los siguientes elementos: 40, 20 y 30, concluyendo que el 25 no se
encuentra.
f.
Si se busca el 45,
se examinan los siguientes elementos: 40, 60 y 50, concluyendo que el 45 no se
encuentra.
g.
Si se busca el 75,
se examinan los siguientes elementos: 40, 60 y 70, concluyendo que el 75 no se
encuentra.