binary search algorithm java implementation examples
Este tutorial explicará la búsqueda binaria y la búsqueda binaria recursiva en Java junto con su algoritmo, implementación y ejemplos de código de búsqueda binaria de Java:
Una búsqueda binaria en Java es una técnica que se utiliza para buscar un valor o clave de destino en una colección. Es una técnica que utiliza la técnica de 'divide y vencerás' para buscar una clave.
La colección en la que se aplicará la búsqueda binaria para buscar una clave debe clasificarse en orden ascendente.
Por lo general, la mayoría de los lenguajes de programación admiten la búsqueda lineal, la búsqueda binaria y las técnicas de hash que se utilizan para buscar datos en la colección. Aprenderemos el hash en nuestros tutoriales posteriores.
=> Visite aquí para aprender Java desde cero.
Lo que vas a aprender:
Búsqueda binaria en Java
La búsqueda lineal es una técnica básica. En esta técnica, la matriz se recorre secuencialmente y cada elemento se compara con la clave hasta que se encuentra la clave o se llega al final de la matriz.
La búsqueda lineal se utiliza raramente en aplicaciones prácticas. La búsqueda binaria es la técnica más utilizada, ya que es mucho más rápida que una búsqueda lineal.
Java proporciona tres formas de realizar una búsqueda binaria:
rol de analista de negocios en scrum ágil
- Usando el enfoque iterativo
- Usando un enfoque recursivo
- Usando el método Arrays.binarySearch ().
En este tutorial, implementaremos y discutiremos estos 3 métodos.
Algoritmo para búsqueda binaria en Java
En el método de búsqueda binaria, la colección se divide repetidamente en la mitad y el elemento clave se busca en la mitad izquierda o derecha de la colección, dependiendo de si la clave es menor o mayor que el elemento medio de la colección.
Un algoritmo de búsqueda binaria simple es el siguiente:
- Calcula el elemento medio de la colección.
- Compare los elementos clave con el elemento medio.
- Si clave = elemento intermedio, devolvemos la posición del índice medio para la clave encontrada.
- De lo contrario, si clave> elemento intermedio, la clave se encuentra en la mitad derecha de la colección. Por lo tanto, repita los pasos 1 a 3 en la mitad inferior (derecha) de la colección.
- Otra clave
Como puede ver en los pasos anteriores, en la búsqueda binaria, la mitad de los elementos de la colección se ignoran justo después de la primera comparación.
Tenga en cuenta que la misma secuencia de pasos se aplica tanto a la búsqueda binaria iterativa como a la recursiva.
Ilustremos el algoritmo de búsqueda binaria con un ejemplo.
Por ejemplo, tome la siguiente matriz ordenada de 10 elementos.
Calculemos la ubicación intermedia de la matriz.
Medio = 0 + 9/2 = 4
# 1) Clave = 21
Primero, compararemos el valor clave con el elemento (mid) y encontramos que el valor del elemento en mid = 21.
Por lo tanto, encontramos que key = (mid). Por tanto, la clave se encuentra en la posición 4 de la matriz.
# 2) Clave = 25
cómo escribir scripts de prueba de automatización
Primero comparamos el valor de la clave con mid. Como (21<25), we will directly search for the key in the upper half of the array.
Ahora de nuevo encontraremos el medio de la mitad superior de la matriz.
Medio = 4 + 9/2 = 6
El valor en la ubicación (mid) = 25
Ahora comparamos el elemento clave con el elemento medio. Entonces (25 == 25), por lo tanto, hemos encontrado la clave en la ubicación (mid) = 6.
Por lo tanto, dividimos repetidamente la matriz y comparando el elemento clave con el medio, decidimos en qué mitad buscar la clave. La búsqueda binaria es más eficiente en términos de tiempo y corrección y también es mucho más rápida.
Implementación de búsqueda binaria Java
Usando el algoritmo anterior, implementemos un programa de búsqueda binaria en Java usando el enfoque iterativo. En este programa, tomamos una matriz de ejemplo y realizamos una búsqueda binaria en esta matriz.
|_+_|Producción:
La matriz de entrada: (5, 10, 15, 20, 25, 30, 35)
Clave a buscar = 20
El elemento se encuentra en el índice: 3
El programa anterior muestra un enfoque iterativo de búsqueda binaria. Inicialmente, se declara una matriz, luego se define una clave a buscar.
Después de calcular el medio de la matriz, la clave se compara con el elemento medio. Luego, dependiendo de si la clave es menor o mayor que la clave, la clave se busca en la mitad inferior o superior de la matriz, respectivamente.
Búsqueda binaria recursiva en Java
También puede realizar una búsqueda binaria utilizando la técnica de recursividad. Aquí, el método de búsqueda binaria se llama de forma recursiva hasta que se encuentra la clave o se agota la lista completa.
El programa que implementa una búsqueda binaria recursiva se da a continuación:
|_+_| Producción:
Lista de entrada: (1, 11, 21, 31, 41, 51, 61, 71, 81, 91
La clave a buscar:
La clave se encuentra en la ubicación: 3 en la lista
agregar un elemento a una matriz
Usando el método Arrays.binarySearch ().
La clase Arrays en Java proporciona un método 'binarySearch ()' que realiza la búsqueda binaria en el Array dado. Este método toma la matriz y la clave que se buscará como argumentos y devuelve la posición de la clave en la matriz. Si no se encuentra la clave, el método devuelve -1.
El siguiente ejemplo implementa el método Arrays.binarySearch ().
|_+_|Producción:
La matriz de entrada: (10, 20, 30, 40, 50, 60, 70, 80, 90)
La clave a buscar: 50
La clave se encuentra en el índice: 4 en la matriz.
Preguntas frecuentes
P # 1) ¿Cómo se escribe una búsqueda binaria?
Responder: La búsqueda binaria generalmente se realiza dividiendo la matriz en mitades. Si la clave que se va a buscar es mayor que el elemento medio, entonces se busca en la mitad superior de la matriz dividiendo y buscando en la submatriz hasta encontrar la clave.
De manera similar, si la clave es menor que el elemento medio, entonces la clave se busca en la mitad inferior de la matriz.
P # 2) ¿Dónde se usa la búsqueda binaria?
Responder: La búsqueda binaria se utiliza principalmente para buscar datos ordenados en aplicaciones de software, especialmente cuando el espacio de memoria es compacto y limitado.
P # 3) ¿Cuál es la gran O de la búsqueda binaria?
Responder: La complejidad temporal de la búsqueda binaria es O (logn) donde n es el número de elementos de la matriz. La complejidad espacial de la búsqueda binaria es O (1).
P # 4) ¿La búsqueda binaria es recursiva?
Responder: Si. Dado que la búsqueda binaria es un ejemplo de una estrategia de divide y vencerás y se puede implementar mediante la recursividad. Podemos dividir la matriz en mitades y llamar al mismo método para realizar la búsqueda binaria una y otra vez.
P # 5) ¿Por qué se llama búsqueda binaria?
Responder: El algoritmo de búsqueda binaria usa una estrategia de divide y vencerás que corta repetidamente la matriz en mitades o dos partes. Por lo tanto, se denomina búsqueda binaria.
Conclusión
La búsqueda binaria es la técnica de búsqueda más utilizada en Java. El requisito para realizar una búsqueda binaria es que los datos se clasifiquen en orden ascendente.
Una búsqueda binaria se puede implementar usando un enfoque iterativo o recursivo. La clase Arrays en Java también proporciona el método 'binarySearch' que realiza una búsqueda binaria en un Array.
En nuestros tutoriales posteriores, exploraremos varias técnicas de clasificación en Java.
=> Tenga cuidado con la serie de capacitación simple de Java aquí.
Lectura recomendada
- Orden de selección en Java: algoritmo de ordenación de selección y ejemplos
- Orden de inserción en Java: algoritmo de ordenación de inserción y ejemplos
- Árbol de búsqueda binaria C ++: implementación y operaciones de BST con ejemplos
- Tutorial de interfaz Java y clase abstracta con ejemplos
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- Clasificación de burbujas en Java: ejemplos de código y algoritmos de clasificación de Java
- Tutorial de cadenas de Java | Métodos de cadena de Java con ejemplos
- ¿Qué es Java Vector | Tutorial de clase de vector de Java con ejemplos