El ejercicio trata de explicar como funciona la busqueda binaria en C++ usando un vector ordenado.
Este es todo el código con un ejemplo de un vector de 5 elementos que escupe la salida correctamente.
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
int main(){
int numero [] = {1,2,3,4,5};
int inf, sup, mitad, dato;
char bandera='F';
dato = 4;
//Algoritmo de Busqueda Binaria
inf=0;
sup=5;
while (inf <= sup){
mitad = (inf+sup)/2;
if (numero[mitad] == dato){
bandera = 'V';
break ;
}
if (numero[mitad] > dato){
sup = mitad;
mitad = (inf+sup)/2;
}
if (numero[mitad] < dato){
inf = mitad;
mitad = (inf+sup)/2;
}
}
if (bandera == 'V'){
cout << "El numero ha sido encontrado en la posicion "<< mitad << endl;
}
else {
cout << "El numero NO fue encontrado.";
}
}
Pero centrándome en comprender lo que hace el algoritmo verdaderamente no consigo entender la logica de ese while:
while (inf <= sup){
mitad = (inf+sup)/2;
if (numero[mitad] == dato){
bandera = 'V';
break ;
}
if (numero[mitad] > dato){
sup = mitad;
mitad = (inf+sup)/2;
}
if (numero[mitad] < dato){
inf = mitad;
mitad = (inf+sup)/2;
}
}
¿Alguien puede explicarmelo por favor? Como termina en la variable "mitad" el valor de la posicion de la busqueda...