Está en la página 1de 12

Bsqueda

Introduccin

Algoritmos

Complejidad

1
Introduccin

Se trata de hallar un elemento de dato a travs de


una valor llave. Existen dos grupos de mtodos de
bsqueda:
Mtodos simples:
Bsqueda lineal sobre un array
Bsqueda lineal sobre una lista enlazada
Bsqueda lineal sobre un array ordenado
Bsqueda lineal sobre una lista enlazada

2
Introduccin

Mtodos avanzados:
Bsqueda binaria sobre un array ordenado
Bsqueda por interpolacin sobre un array ordenado
Bsqueda por interpolacin sobre un array ordenado
Bsqueda binaria sobre un rbol binario de
bsqueda
Bsqueda usando estrategia hash

3
Algoritmos
Bsqueda lineal sobre un array
Consiste en una bsqueda secuencial sobre el array.
Bsqueda lineal sobre una lista enlazada
Consiste en una bsqueda secuencial sobre la lista.
Bsqueda lineal sobre un array ordenado
Consiste en una bsqueda secuencial sobre el array
Bsqueda lineal sobre una lista ordenada
Consiste en una bsqueda secuencial sobre la lista

4
Algoritmos
Bsqueda binaria sobre un array ordenado
Aplica la tcnica de dividir y vencer. Consiste en dividir
por la mitad el array original obteniendo dos subarrays. La
bsqueda se limita a uno de los subarrays.

5
Algoritmo Bsqueda Binaria
Hallar elemento 22

6
Algoritmo Bsqueda Binaria
Hallar elemento 22

7
Algoritmo Bsqueda Binaria
Hallar elemento 22

8
Algoritmo Bsqueda Binaria
Hallar elemento 22

9
Algoritmo Bsqueda Binaria
Pseudocdigo (versin 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 Bsqueda Binaria
Tiempo de ejecucin:
El rango de elementos candidatos a buscar es la mitad despus de
cada comparacin.

En la implementacin con array, el acceso por rango toma un tiempo


O(1), por tanto, la bsqueda binaria corre en un tiempo O(log n).

11
Algoritmos
Bsqueda por interpolacin sobre un array
ordenado
Es un mtodo mejorado al de bsqueda binaria. Se diferencia
de ella en que la particin de los subarrays se realiza de manera
lineal segn la siguiente frmula:
ind_interp = entero (Pri + (Ult - Pri -1) (llave - A[Pri]) )
A[Ulti] - A[Prim]
Bsqueda por Fibonacci sobre un array ordenado
Es un mtodo mejorado al de bsqueda binaria. Se diferencia
de ella en que la particin de los subarrays se realiza usando
los nmeros de Fibonacci:
Fib[0] = 0, Fib[1] = 1, Fib[k] = Fib[k-1] + Fib[k-2] k>1

12

También podría gustarte