Búsqueda binaria con Java

25/Feb/2020 Java 5 Comentarios
Programación en Java

Una búsqueda binaria con Java es aquella que permite localizar un elemento dentro de una colección, en nuestro caso un array, comparando los valores que hay dentro del array.

El proceso que se realiza en una búsqueda binaria sería el siguiente:

  1. En primer lugar es ordenar los elementos, ya que a partir de ese momento buscará por ubicación dentro de la lista de elementos.
  2. Lo siguiente que hace es validar si el número que sea la mitad del array coincide con el número buscado.
  3. En el caso que no coincida realiza la siguiente comparación. Si el elemento que buscamos es menos al elemento que está en medio del array se queda con la parte izquierda del array, si el elemento que buscamos es mayor que el elemento que está en medio del array se queda con la parte derecha del array.
  4. Elige una de las dos partes y vuelve a realizar lo indicado en el punto 2. Así hasta que encuentre el número buscado o bien retorne indicando que no ha encontrado elemento.

Si vamos a realizar una búsqueda binaria en Java lo primero que tendremos que tener es un array y el número que queremos encontrar.

int[] numeros = {12,45,67,27,89,84,65,21,44};
int numberToSearch = 44;

Lo siguiente será ordenar el array, ya que no sabremos si por defecto está ordenado. Para ello vamos a utilizar el método Array.sort() el cual recibirá el array como parámetro.

Arrays.sort(numeros);

Ahora podríamos codificarnos el algormito de búsqueda binaria con Java (que lo haremos en otro ejemplo), pero en este caso vamos a utilizar el método Arrays.binarySearch(array,numero) que realiza la búsqueda por nosotros.

Este método recibe por un lado el array ordenado con los número y por otro el número que estamos buscando. El caso de encontrar el número nos devolverá un valor entero con el número con la posición que ocupa dentro del array el número buscado, si no se encuentra dentro del array devolverá un número negativo.

Así utilizaremos la siguiente estructura para buscarlo.

if (Arrays.binarySearch(numeros, numberToSearch)>0)
  System.out.println("El número " + numberToSearch + " está en el Array");
else 
  System.out.println("El número " + numberToSearch + " NO está en el Array");

De esta forma tan sencilla tendremos una búsqueda binaria con Java.

 

Vídeos sobre Java


5 comentarios en “Búsqueda binaria con Java”

Víctor Cuervo

Yamil

Que poco útil! Creo que el mundo entero viene por el algoritmo de búsqueda binaria

Víctor Cuervo

Pablo

Creo que con lo que está explicado se puede armar el algoritmo sin inconvenientes. De todas formas la clase Arrays ya trae el metodo estático binarySearch() y ahi podés ver el código

Saludos

Víctor Cuervo

Alberto Escalante

Hola soy nuevo en java y me gustaria una orientacion sobre ese ejemplo para ir adactando sobre que es lo que debo hacer o usar en el codigo.

Víctor Cuervo

Alberto Escalante

Java
Ordenamiento y búsqueda.
Realiza en java los algoritmos de ordenamiento por los siguientes criterios: Inserción directa. Burbuja, intercambio, selección, quick sort, merge sort.
Adicionalmente, realizar los algoritmos de búsqueda: secuencial y binaria.

Cree una clase en java que permita almacenar los productos de una farmacia. Cada registro tiene los campos Codigo, Nombre, Descripcion_del_medicamento (antibiótico, analgésico, etc), laboratorio, proveedor, precio. Porcentaje_IVA, stock y fecha_de_caducidad. La fecha deberá guardar por separado el dia, mes y año.
Diseñe la estructura de datos (Clase) y métodos que permita escribir los criterios que a continuación se solicitan:

a. Cree un menú para la clase Main, donde podrá elegir el método de ordenamiento que se le solicito en el estudio. (ver resalte en amarillo).

b. En el menú, también deben tener la opción de buscar por el método binario, bajo los siguientes criterios: por código, o por nombre medicamento.

Víctor Cuervo

José González

disculpa Alberto Escalante, podrias ayudarme? o quien pueda, tengo una gran incognita que necesito resolver a la brevedad posible y estoy iniciando mi estudio en java.

Descriptivamente que tengo que hacer para implementar el metodo de busqueda binaria en una lista enlazada simple?

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.