Definición del Algoritmo
Inicialización:
- Definir los índices
inf(inferior) ysup(superior) que marcan los límites del rango en el que se busca el elemento. - Calcular el punto medio
mitaddel rango actual.
- Definir los índices
Comparación:
- Si el elemento en la posición
mitades igual al dato buscado, se ha encontrado el elemento. - Si el elemento en la posición
mitades mayor que el dato buscado, ajustar el índicesupamitad - 1para buscar en la mitad izquierda. - Si el elemento en la posición
mitades menor que el dato buscado, ajustar el índiceinfamitad + 1para buscar en la mitad derecha.
- Si el elemento en la posición
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.
- El proceso se repite hasta que el rango de búsqueda se reduzca a cero (
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
Inicialización:
infse establece en0ysupen el último índice del arreglo.datoes el valor que queremos buscar.
Búsqueda:
- Se calcula el índice
mitaddel rango actual. - Si el elemento en
mitades igual adato, se marca como encontrado. - Si el elemento en
mitades mayor quedato, se ajustasuppara buscar en la mitad izquierda. - Si el elemento en
mitades menor quedato, se ajustainfpara buscar en la mitad derecha.
- Se calcula el índice
Resultado:
- Si el elemento se encuentra, se imprime la posición; si no, se informa que el elemento no se ha encontrado.