Sie sind auf Seite 1von 11

Ingeniera en Sistemas Computacionales

Estructura de Datos

Unidad 8
Mtodos de Bsqueda
La bsqueda es el proceso de localizar en una
estructura (arreglo o archivo) a un elemento
especifico que puede ser identificado por uno de
sus atributos conocido normalmente como clave
de acceso o llave.
La bsqueda termina exitosamente cuando se
localiza el elemento que contiene la llave
buscada, o termina sin xito, cuando se
determina que no aparece ningn elemento con
esa llave.
Tipos de bsqueda
Secuencial
En arreglo desordenado
En arreglo ordenado
Binaria
Hash
En rboles
Bsqueda Secuencial
En arreglo desordenado:
Procesa los elementos del arreglo de uno a
uno hasta encontrar el elemento buscado o
el final del arreglo.
Arreglo desordenado Cuantos elementos se deben
3 visitar para encontrar:
0
1 5 a) Elemento 5

2 7 b) Elemento 1

3 9 c) Elemento 0

4 8 d) Elemento 3

5 1
Bsqueda Secuencial
En arreglo ordenado:
Procesa los elementos del arreglo de uno a
uno hasta encontrar el elemento buscado o
un elemento con clave mayor o el fin de
archivo con lo cual determina que la
bsqueda finalizo sin xito.
La bsqueda es ms eficiente cuando los
elementos del arreglo estn ordenados.
Bsqueda secuencial en arreglo
ordenado

Arreglo ordenado Cuantos elementos se deben


1 visitar para encontrar:
0
1 3 a) Elemento 5

2 5 b) Elemento 1

3 7 c) Elemento 0

4 8 d) Elemento 3

5 9
Bsqueda secuencial
Calcular la complejidad de tiempo
// en arreglo desordenado
Objeto busquedaSecuencial (Archivo a, Clave c){
abrir archivo a
mientras (! eof(a)) {
r= leer archivo a
si (c == r.llave()) regresa r
}
regresa No encontrada
} // en arreglo ordenado
Objeto busquedaSecuencial (Archivo a, Clave c){
abrir archivo a
mientras (! eof(a)) {
// escribe el cdigo

}
regresa No encontrada
}
Bsqueda Binaria
Requisitos para la bsqueda binaria son:
El arreglo debe estar ordenado en un orden especfico de
acuerdo al valor de la llave.
Debe conocerse el nmero total de elementos que existen.

Este mtodo procesa la bsqueda de un elemento


comparandolo con el elemento del centro del arreglo, si
el elemento buscado es igual, termina la bsqueda; si
es menor, se desecha la parte alta del arreglo, y repite
el proceso con la primera mitad del arreglo; si es mayor,
se desecha la parte baja del arreglo y repite el proceso
con la parte alta del arreglo. Cuando no hay mas
subdivisiones que comparar, el proceso termina con un
fallo (no se encontr el elemento buscado).
Bsqueda Binaria
Proceso general
Establecer los limites (inferior y superior) de los ndices del
arreglo
Mientras (inferior < superior)
Comparar la llave buscada con la llave localizada al centro del
arreglo.
Si la llave analizada corresponde a la buscada fin de bsqueda
Si la llave buscada es menor que la analizada ajustar los limites
inferior y superior para desechar una parte alta del arreglo
Si la llave buscada es mayor que la analizada ajustar los limites
inferior y superior para desechar una parte baja del arreglo

El proceso de partir por la mitad el arreglo se repite hasta


encontrar el registro o hasta que el tamao de la lista restante
sea cero , lo cual implica que el valor de la llave buscada no esta
en la lista.
Bsqueda Binaria

0 1 Buscar elemento 12
(LI+LS)/2
1 3
(0+8)/2 = 4
2 5
Compara 12 = Arreglo[4]?
3 7
desecha la mitad del arreglo y
4 8 repite el clculo y la comparacin
5 9 Buscar elemento 12
6 12 (LI+LS)/2
(5+8)/2 = 6
7 13 Compara 12 = Arreglo[6]?
8 50 termina la bsqueda con xito, el elemento se
encontr en la posicin 6
Bsqueda Binaria
Objeto busquedaBinaria (Arreglo a, Clave c){
limiteInferior =0 // primer ndice del arreglo
limiteSuperior = n // ltimo ndice del arreglo
mientras (limiteInferior <= limiteSuperior){
centro = (limiteInferior + limiteSuperior) /2
si (c==a[centro]) regresa a[centro]
sino {
si (c>a[centro]) limiteInferior = centro +1
sino limiteSuperior = centro -1
}
regresa No encontrado
}