¿Está deletreado correctamente "seperar"?
En esta página, utilizarás un algoritmo de búsqueda binaria para buscar eficientemente en una lista ordenada.
Responder esta pregunta es fácil en Snap!, porque puedes solo preguntar
. Pero "fácil" no significa rápido. El bloque contiene
todavía tiene que buscar cada elemento de la lista hasta que encuentre el que está buscando (y decir verdadero
) o alcanzar el final de la lista (y decir falso
).
Cuando estás buscando una sola cosa en una lista (por ejemplo, revisando si una palabra en particular está escrita correctamente) en vez de encontrar todas las palabras con algunas características (por ejemplo, buscar todas las palabras de cinco letras), puedes utilizar la estrategia de Página 1: Adivina mi número para hacer tu algoritmo más rápido. La mejor estrategia para ese problema es un algoritmo de búsqueda binaria: siempre adivina el valor medio. De esa manera, eliminas la mitad de las posibilidades con cada adivinanza. Podemos utilizar una estrategia similar para buscar una palabra en una lista de palabras.
Podrías haber escrito un programa de adivinanza de números más sencillo: la computadora podría adivinar el número 1, luego el 2, luego el 3, y así sucesivamente hasta encontrar el número. Eso sería un algoritmo de búsqueda lineal; es más fácil de codificar, pero tarda más en ejecutarse porque cada vez que hace una adivinanza errónea, elimina solo esa adivinanza. Con la búsqueda binaria, cada adivinanza incorrecta elimina la mitad de posibilidades a la vez.
:
Búsqueda binaria
AAP-2.P.1, AAP-2.P.2
Un algoritmo de búsqueda binaria (binary search) comienza en medio de una lista ordenada y elimina repetidamente la mitad de la lista hasta que se encuentra el valor deseado o se han eliminado todos los elementos.
AAP-2.O.1
La búsqueda lineal hace un recorrido completo de la lista. La búsqueda binaria ahorra tiempo al hacer un recorrido parcial de la lista.
Lo único que casi todo el mundo sabe de las computadoras es que utilizan binarios: unos y ceros. La búsqueda binaria no tiene nada que ver con eso. La palabra "binario" solo significa "dos", ya sean dos dígitos o dos mitades.
-
Compara el bloque de búsqueda binaria
con tu código de Página 1: Adivina mi número. ¿Qué partes son iguales? ¿Qué partes son diferentes?
El bloque
>
(así como los bloques
<
y
=
) compara las palabras alfabéticamente:
- Comprueba si ¿"seperar" está escrito correctamente utilizando la
búsqueda binaria
para buscar la palabra en la lista de 100,000 palabras (ordenadas).
- Prueba la
búsqueda binaria
con algunas palabras que sabes que están escritas correctamente y otras que sabes que están incorrectas.
- Ahora utiliza la
búsqueda binaria
para buscar las mismas palabras en las 100,000 palabras desordenadas.
AAP-2.P.2
¿Por qué funciona en una lista pero no en la otra?
El bloque contiene
no puede hacer ninguna suposición sobre la lista en la que estás buscando, pero si solo estás buscando una cosa en una lista ordenada puedes utilizar la búsqueda binaria.
AAP-2.P.2
Dos cosas afectan la posibilidad que utilices un algoritmo de búsqueda binario:
- ¿Qué pregunta estás intentando responder? ¿Estás buscando una cosa en una lista o estás encontrando todas las cosas de la lista con algunas características?
- ¿Cuáles son las condiciones de tus datos? ¿Están ordenados o desordenados?
|
encuentra un valor |
encuentra muchos valores |
Datos ordenados |
puedes usar búsqueda binaria |
debes usar búsqueda lineal |
Datos desordenados |
debes usar búsqueda lineal |
debes usar búsqueda lineal |
Si estás trabajando con listas cortas, no es tan importante el algoritmo que utilices. Es cuando se trata de muchos datos que tienes que pensar cuidadosamente sobre el algoritmo.
-
AAP-2.P part b, AAP-2.P.2
Para utilizar una búsqueda binaria, los datos deben ser...
binarios
Todos los datos de una computadora se representan mediante binarios (unos y ceros), pero eso no tiene nada que ver con las búsquedas binarias, que se comparan con el valor medio para elegir cuál de las dos mitades eliminar.
ordenados
¡Correcto! Si los datos están ordenados, la comparación con el valor medio te dará una buena información sobre qué mitad de los datos debes guardar.
desordenados
Si los datos no están ordenados, no puedes estar seguro de que se pueda eliminar todo lo que está antes o después del valor medio.
lineales
"Lineal" es el nombre de otro algoritmo de búsqueda, no una propiedad de los datos.
¿Cuál de las siguientes preguntas se puede responder con una búsqueda binaria, suponiendo que los datos estén ordenados? Marca todas las que apliquen:
¿Cuál es el número de teléfono de mi amigo Rasheed?
¡Correcto! Estás buscando por un número de teléfono en la lista.
Dame una lista de todas las canciones de Beyoncé.
Tenemos que contrar todas las canciones de Beyoncé, no solo una.
Dime si el pan está en la lista de compras.
¡Correcto! Estás buscando un artículo en la lista.
¿Quién de mi lista de contactos vive en la Gran Avenida?
La lista de tus contactos está probablemente ordenado por nombre, no por dirección. También, puede haber más de una persona que viva en la Gran Avenida.
- Construye un corrector ortográfico.
Utiliza

para convertir el texto de entrada en una lista.
¿Debe tu corrector ortográfico buscar en el diccionario cada palabra del texto o buscar en el texto cada palabra del diccionario?