Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmos de Busqueda - PPSX
Algoritmos de Busqueda - PPSX
FACULTAD DE INGENIERIA
DEPARTAMENTO DE COMPUTACIÓN
CATEDRA DE COMPUTACION II
La búsqueda es una de las operaciones
más básicas y necesaria en muchos
casos.
¿Cómo lo Determinó?
• En un Búsqueda humana
– “Solo tiene que ver la lista”
– Y el cerebro puede procesar listas de
pequeño tamaño (5 – 9 elementos)
automáticamente.
¿ Es igual a K ? NO
SI
A 2 5 3 6 14 7 12 10 8 15 22 16
A 2 5 3 6 14 7 12 10 8 15 22 16
Se compara 1 vez
Si está en A[tA]
¿ El Peor Caso ? k = 16
Ó No se encuentra
A 2 5 3 6 14 7 12 10 8 15 22 16
Se compara N vez
• Usa un solo ciclo
– Es lineal, busca en todos los elementos.
– Es lento, si no existe el elemento a buscar en la lista,
recorre toda la lista.
• Se realizan tres acciones en el ciclo
– Se compara el valor del elemento de la lista con el
valor buscado.
– Se pregunta si se está en el final de la lista.
– Se incrementa el contador de elementos.
1. Búsqueda Secuencial
2. Búsqueda Binaria
¿Existirá una forma más eficiente de
hacer una búsqueda que la búsqueda
secuencial?
Ejemplo:
› ¿ Cómo encuentra una palabra en el
diccionario o un número de teléfono en la
guía telefónica ?
› Asuma que la lista está ordenada y divida la
lista en dos.
Si (valor = elemento [posición media]) entonces
‘Se encontró’
SiNo
Si (valor < elemento [posición media]) entonces
Buscar en la mitad izquierda de la lista
SiNo
Buscar en la mitad derecha de la lista
Búsqueda Binaria
Caso 1: valor = A[medio]
valor Buscado = 10
inicio = 0, fin = 8
medio = (inicio + fin) \ 2 = 4
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
valor = 7
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
A: 1 5 7 9 10 13 17 19 27
0 1 2 3 4 5 6 7 8
‘ Con el Arreglo ordenado en forma ascendente
Function BusquedaPosicion(ByVal V() As Integer, _
ByVal tV As Integer, ByVal Valor As Integer) As Integer
Dim Inicio As Integer = 0
Dim Final As Integer = tV
Dim Medio As Integer = (Inicio + Final) \ 2
While (Inicio<Final) And (V(Medio)<>Valor)
If V(Medio)>Valor Then
Final = Medio - 1
Else
Inicio = Medio + 1
End If
Medio = (Inicio + Final) \ 2
End While
If V(Medio)=Valor Then
BusquedaPosicion = Medio
Else
BusquedaPosicion = -1 ‘ No se consigue
End If
End Function
En el caso de la búsqueda en arreglos tipo Matriz, el
algoritmo a seguir puede ser cualquiera de los dos
presentados anteriormente, con la diferenciación que
éste es empleado en la dimensión que se desea
buscar el valor (Fila o Columna).
Buscar el valor 7 en
la Columna 3
Buscar el Valor 6
En la Fila 1
Function BusquedaFila(ByVal M(,) As Integer,
ByVal X As Integer, ByVal tC As Integer,
ByVal K As Integer) As Integer
Dim I As Integer = 0
BusquedaFila = -1 ‘ Partiendo que no esta el valor
‘ Verificar que se encuentra el valor
While (I < tC) And (M(X, I) <> K)
I = I + 1
End While Observe que se aplica el algoritmo
If M(X, I) = X Then de búsqueda secuencial, en la
BusquedaFila = I dimensión de las columnas de la
End If matriz
End Function
La búsqueda secuencial se puede usar
en cualquier lista (ordenada o
desordenada), pero es ineficiente.