Javascript De Búsqueda Binaria
__main__ Python module |
array Python module |
ast Python module |
code Python module |
COM PHP module |
Ev PHP module |
exp |
FFI PHP module |
iat |
imp Python module |
io Python module |
JavaScript |
numbers Python module |
os Python module |
Python functions |
re Python module |
StackOverflow |
stat Python module |
time Python module |
UI PHP module
Michael Zippo
04.11.2021
Còmo codificar una b√∫squeda binaria en JavaScript
Los algoritmos de b√∫squeda hacen la vida mucho más fácil como programador. Hacerlo facilita la b√∫squeda de un elemento en particular dentro de un conjunto de datos de decenas, cientos o miles de elementos.
Una de las formas más populares de b√∫squeda es la b√∫squeda binaria. Esta b√∫squeda encuentra rápidamente un elemento en una matriz. Cada vez que la b√∫squeda examina un elemento, reduce a la mitad el n√∫mero de elementos que quedan por buscar.
En esta guìa, vamos a hablar sobre qué son las b√∫squedas binarias y còmo trabajan ellos. Luego, implementaremos una b√∫squeda binaria usando dos enfoques diferentes: iterativo y recursivo.
Construyamos un algoritmo de b√∫squeda binaria en JavaScript !
¿Qué es una b√∫squeda binaria?
Una b√∫squeda binaria es un algoritmo informático que busca un elemento en una matriz ordenada.
Comienza en el medio de una matriz y verifica si el elemento del medio es menor, igual o mayor que el n√∫mero que está buscando.
Si el n√∫mero es más peque√±o, el algoritmo sabe que debe seguir buscando en la mitad izquierda de la matriz, donde están los n√∫meros más peque√±os; si el n√∫mero es mayor, el algoritmo se centrará en la mitad derecha de la matriz. Las b√∫squedas binarias solo funcionan en listas ordenadas.
Las b√∫squedas binarias son más eficientes que las b√∫squedas lineales. Esto se debe a que cada vez que se realiza una b√∫squeda, el n√∫mero de elementos que quedan por buscar en la lista se reduce a la mitad.
Còmo usar un binario B√∫squeda
Una b√∫squeda binaria es fácil de entender una vez que la dominas.
Antes de implementar un algoritmo de b√∫squeda binaria, veamos un paso a -paso. Vamos a encontrar el n√∫mero "9" en una lista. Comencemos con una lista ordenada:
Primero, necesitamos encontrar el n√∫mero del medio y asignarlo a una variable. Esto se encuentra calculando la suma del primer y √∫ltimo n√∫mero y dividiéndolo por dos. Llamaremos a esta variable " middle & rdquo ;:
Start | | Medio | | Final |
2 | 6 | 8 | 9 | 10 |
8 es nuestro n√∫mero medio. Luego, podemos comparar el n√∫mero del medio con el que estamos buscando. Si el n√∫mero del medio es igual al que estamos buscando, nuestra b√∫squeda puede detenerse.
En este ejemplo, 8 no es igual a 9. Nuestra b√∫squeda contin√∫a.
A continuaciòn, debemos comparar si el n√∫mero del medio es mayor que 9. No lo es.
Esto nos dice que el n√∫mero que estamos buscando debe estar después del n√∫mero del medio. 9 es mayor que 8 en una lista ordenada. Vamos a establecemos nuestro n√∫mero inicial para que sea igual al n√∫mero del medio. Esto se debe a que sabemos que el n√∫mero que estamos buscando no viene antes del n√∫mero del medio.
Si el n√∫mero que estamos buscando la b√∫squeda es más peque√±a, establecerìamos el n√∫mero final para que sea igual al n√∫mero del medio. Debido a que el n√∫mero es más peque√±o que el n√∫mero del medio, podrìamos enfocar nuestra b√∫squeda en la mitad inferior de la lista.
La b√∫squeda binaria se repite nuevamente en la mitad superior de la lista porque 9 es mayor que 8:
| | Inicio | Medio | Fin |
2 | 6 | 8 | 9 | 10 |
Encontramos de nuevo el n√∫mero del medio. Esto es 9. Podemos comparar 9 con el n√∫mero que estamos buscando. 9 es igual al n√∫mero que estamos buscando.
Esto significa que nuestra b√∫squeda puede detenerse. ¬°Hemos encontrado con éxito el n√∫mero 9 en nuestra lista!
Còmo implementar una b√∫squeda binaria en JavaScript
Las b√∫squedas binarias se pueden implementar usando un enfoque iterativo o recursivo.
B√∫squeda binaria iterativa
Una b√∫squeda binaria iterativa usa un bucle while para encontrar un elemento en una lista. Este ciclo se ejecutará hasta que el elemento se encuentre en la lista, o hasta que se haya buscado en la lista.
Comencemos escribiendo un funciòn que realiza nuestra b√∫squeda binaria:
Empezamos por definir dos variables: inicio y final. Estos mantienen un registro de los valores más altos y más bajos con los que trabaja nuestra b√∫squeda. Usamos un bucle while que se ejecuta hasta que el n√∫mero inicial es mayor que el n√∫mero final. Este bucle calcula el n√∫mero intermedio entre el inicio y el final de la lista.
Si el n√∫mero que estamos buscando es igual al n√∫mero del medio, el n√∫mero del medio se devuelve a nuestro programa principal. Si el n√∫mero es menor, el valor inicial se establece para que sea igual al n√∫mero del medio más uno. Estas comparaciones se realizan mediante una instrucciòn if .
De lo contrario, el n√∫mero final se establece en ser igual al n√∫mero del medio menos uno. Si nuestro n√∫mero no se encuentra después de que se haya ejecutado el ciclo while, se devuelve -1. A esto lo llamamos una condiciòn base. En nuestro programa principal, verificaremos si el n√∫mero devuelto es igual a -1. Si es asì, significa que no se pudo encontrar nuestro n√∫mero.
Nuestra funciòn a√∫n no funciona. Necesitamos escribir un programa principal que lo llame:
Hemos definido una lista de n√∫meros a través de los cuales buscar y el n√∫mero que queremos encontrar en nuestra lista. A continuaciòn, hemos llamado a la funciòn binarySearch. Esto realizará nuestra b√∫squeda. La b√∫squeda devolverá -1 o la posiciòn del elemento que estamos buscando.
-1 indica que no se pudo encontrar un elemento. Si no se encuentra un elemento, se ejecuta el contenido de nuestra instrucciòn else
. De lo contrario, se ejecuta el contenido de la instrucciòn if
.
Ejecutemos nuestro còdigo:
¬°Esto nos dice que nuestra b√∫squeda ha sido exitosa!
Recursivo B√∫squeda binaria
Una b√∫squeda binaria recursiva se considera más elegante que una iterativa. Esto se debe a que las b√∫squedas binarias realizan la misma operaciòn una y otra vez en una lista. Este comportamiento se puede implementar mediante un algoritmo de recursividad.
Abra un nuevo archivo JavaScript y pegue este còdigo:
Este còdigo hace las mismas comparaciones que nuestra primera b√∫squeda. Comprueba si el n√∫mero del medio es igual, mayor o menor que el n√∫mero que estamos buscando.
Al comienzo de nuestra funciòn , usamos una instrucciòn if para verificar si el n√∫mero inicial es mayor que el n√∫mero final. Si lo es, significa que nuestro elemento no se pudo encontrar en la lista que hemos especificado. Devolvemos -1 al programa principal si este es el caso.
Si el n√∫mero que estamos buscando es el mismo que el n√∫mero del medio, el n√∫mero del medio se devuelve al programa principal. Si el n√∫mero que estamos buscando es mayor o menor que el n√∫mero del medio, nuestra funciòn binarySearch es ejecutar de nuevo. Esto contin√∫a hasta que se encuentra nuestro elemento.
Para ejecutar esta funciòn, tendremos que hacer un cambio en nuestro programa principal:
Necesitamos pasar dos parámetros adicionales: los valores de " start " y " end & rdquo ;. El valor de " start " es igual a 0. El valor de " end " es igual a la longitud de la lista menos uno.
Ejecutemos nuestro còdigo y veamos qué sucede:
¬°Nuestra b√∫squeda binaria fue exitosa! Utiliza el mismo algoritmo subyacente que el enfoque iterativo. La diferencia es que la b√∫squeda binaria se realiza usando una funciòn que se llama a sì misma hasta que se encuentra el elemento o hasta que se busca en la lista por completo, lo que ocurra primero.
Conclusiòn
B√∫squedas binarias facilite la b√∫squeda de un elemento en una lista. Cada vez que se ejecuta una b√∫squeda, el n√∫mero de elementos que quedan por buscar en una lista se reduce a la mitad. Esto hace que una b√∫squeda binaria sea más eficiente que una b√∫squeda lineal.
¬°Ahora está listo para implementar una b√∫squeda binaria en JavaScript como un experto!