Java – Arreglos – Búsqueda de un valor (int) – Algoritmo binario

Busqueda de “28”: true
Busqueda de “478”: true
Busqueda de “300”: false

/**
 * ArrayDemo.java
 * 
 * Ejemplo que muestra como buscar un valor en un arreglo de números enteros. Se utiliza el
 * el algoritmo binario (o dicotomico).
 */

/**
 *
 * @author Dark[byte]
 */
class ArrayDemo {

    //un arreglo de 10 números enteros ordenados en forma ascendente
    private static int numeros[] = { 0 , 6, 28, 39, 78, 100, 125, 478, 540, 678 };

    /**
     * Punto de entrada del programa.
     * 
     * @param args argumentos de la línea de comandos.
     */
    public static void main(String[] args) {
        //imprimimos en pantalla el resultado de buscar 125, 0, y 400 en el arreglo
        System.out.println("Busqueda de \"28\": " + busquedaDicotomica(numeros, 28));
        System.out.println("Busqueda de \"478\": " + busquedaDicotomica(numeros, 478));
        System.out.println("Busqueda de \"300\": " + busquedaDicotomica(numeros, 300));
    }

   /**
     * Se realiza una búsqueda dicotomica para encontrar un valor en un
     * arreglo de números enteros.
     * 
     * @param arreglo el arreglo donde se realizara la búsqueda.
     * @param dato el numero entero que se buscara.
     * @return true si el valor es encontrado, false en caso contrario.
     */
    static boolean busquedaDicotomica(int[] arreglo, int dato) {
        int inf = 0;
        int sup = arreglo.length - 1;
        int centro;

        while (inf <= sup) {
            centro = (inf + sup) / 2;
            
            if (dato > arreglo[centro]) {
                inf = centro + 1;
            } else if (dato < arreglo[centro]) {
                sup = centro - 1;
            } else {
                break;         
        }                  
        
        if (inf > sup) {
            return false;
        }

        return true;
    }
}


, , , , , , , ,

  1. Deja un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

A %d blogueros les gusta esto: