Definición del Algoritmo

  1. Inicialización:

    • Definir los índices inf (inferior) y sup (superior) que marcan los límites del rango en el que se busca el elemento.
    • Calcular el punto medio mitad del rango actual.
  2. Comparación:

    • Si el elemento en la posición mitad es igual al dato buscado, se ha encontrado el elemento.
    • Si el elemento en la posición mitad es mayor que el dato buscado, ajustar el índice sup a mitad - 1 para buscar en la mitad izquierda.
    • Si el elemento en la posición mitad es menor que el dato buscado, ajustar el índice inf a mitad + 1 para buscar en la mitad derecha.
  3. Terminación:

    • El proceso se repite hasta que el rango de búsqueda se reduzca a cero (inf > sup), o se haya encontrado el elemento.

Código en C++

// Búsqueda Binaria

#include<iostream>
#include<stdlib.h>

using namespace std;

int main(){
    int numeros[] = {1, 2, 3, 4, 5}; // Arreglo de números ordenados
    int sup, inf, mitad, dato;
    char band = 'F'; // Variable para verificar si el elemento fue encontrado

    dato = 5; // Elemento a buscar

    // Inicialización de índices
    inf = 0;
    sup = sizeof(numeros)/sizeof(numeros[0]) - 1; // Último índice del arreglo

    // Algoritmo de búsqueda binaria
    while (inf <= sup) {
        mitad = (inf + sup) / 2;

        if (numeros[mitad] == dato) {
            band = 'V'; // Elemento encontrado
            break;
        }

        if (numeros[mitad] > dato) {
            sup = mitad - 1; // Buscar en la mitad izquierda
        } else {
            inf = mitad + 1; // Buscar en la mitad derecha
        }
    }

    // Resultado
    if (band == 'V') {
        cout << "El elemento ha sido encontrado en la posición: " << mitad << endl;
    } else {
        cout << "El elemento NO ha sido encontrado." << endl;
    }

    system("pause");
    return 0; 
}

Explicación del Código

  1. Inicialización:

    • inf se establece en 0 y sup en el último índice del arreglo.
    • dato es el valor que queremos buscar.
  2. Búsqueda:

    • Se calcula el índice mitad del rango actual.
    • Si el elemento en mitad es igual a dato, se marca como encontrado.
    • Si el elemento en mitad es mayor que dato, se ajusta sup para buscar en la mitad izquierda.
    • Si el elemento en mitad es menor que dato, se ajusta inf para buscar en la mitad derecha.
  3. Resultado:

    • Si el elemento se encuentra, se imprime la posición; si no, se informa que el elemento no se ha encontrado.