Está en la página 1de 12

Bsqueda

Introduccin
Algoritmos Complejidad

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

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

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.

Algoritmo Bsqueda Binaria


Hallar elemento 22

Algoritmo Bsqueda Binaria


Hallar elemento 22

Algoritmo Bsqueda Binaria


Hallar elemento 22

Algoritmo Bsqueda Binaria


Hallar elemento 22

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