Está en la página 1de 12

Búsqueda

• Introducción

• Algoritmos

• Complejidad

1
Introducción

• Se trata de hallar un elemento de dato a través de


una valor llave. Existen dos grupos de métodos de
búsqueda:
– Métodos simples:
• Búsqueda lineal sobre un array
• Búsqueda lineal sobre una lista enlazada
• Búsqueda lineal sobre un array ordenado
• Búsqueda lineal sobre una lista enlazada

2
Introducción

– Métodos avanzados:
• Búsqueda binaria sobre un array ordenado
• Búsqueda por interpolación sobre un array ordenado
• Búsqueda por interpolación sobre un array ordenado
• Búsqueda binaria sobre un árbol binario de
búsqueda
• Búsqueda usando estrategia hash

3
Algoritmos
• Búsqueda lineal sobre un array
Consiste en una búsqueda secuencial sobre el
array.
• Búsqueda lineal sobre una lista enlazada
Consiste en una búsqueda secuencial sobre la lista.
• Búsqueda lineal sobre un array ordenado
Consiste en una búsqueda secuencial sobre el
array
• Búsqueda lineal sobre una lista ordenada
Consiste en una búsqueda secuencial sobre la lista
4
Algoritmos
• Búsqueda binaria sobre un array ordenado
Aplica la técnica de dividir y vencer. Consiste en dividir
por la mitad el array original obteniendo dos subarrays. La
búsqueda se limita a uno de los subarrays.

5
Algoritmo Búsqueda Binaria
Hallar elemento 22

6
Algoritmo Búsqueda Binaria
Hallar elemento 22

7
Algoritmo Búsqueda Binaria
Hallar elemento 22

8
Algoritmo Búsqueda Binaria
Hallar elemento 22

9
Algoritmo Búsqueda Binaria
Pseudocódigo (versión recursiva):
Algorithm BinarySearch(S, k, low, high)
if low > high then
return NO_EXISTE_LLAVE
else
mid  (low+high) / 2
if k = key(mid) then
return key(mid)
else if k < key(mid) then
return BinarySearch(S, k, low, mid-1)
else return BinarySearch(S, k, mid+1, high)
10
Algoritmo Búsqueda Binaria
Tiempo de ejecución:
• El rango de elementos candidatos a buscar es la mitad
después de cada comparación.

• En la implementación con array, el acceso por rango toma


un tiempo O(1), por tanto, la búsqueda binaria corre en un
tiempo O(log n). 11
Algoritmos
• Búsqueda por interpolación sobre un array
ordenado
Es un método mejorado al de búsqueda binaria. Se
diferencia de ella en que la partición de los subarrays se
realiza de manera lineal según la siguiente fórmula:
ind_interp = entero (Pri + (Ult - Pri -1) (llave - A[Pri]) )
A[Ulti] - A[Prim]
• Búsqueda por Fibonacci sobre un array
ordenado
Es un método mejorado al de búsqueda binaria. Se
diferencia de ella en que la partición de los subarrays se
realiza usando los números de Fibonacci:
Fib[0] = 0, Fib[1] = 1, Fib[k] = Fib[k-1] + Fib[k-2] k>1
12

También podría gustarte