Hola eke_ps.
Creo que podes simplificar la función de búsqueda:
Código C:
Ver originalint binaria(int buscado, int *arreglo, int hasta)
{
int desde = 0, medio;
--hasta;
while(desde <= hasta) {
medio = (hasta+desde) >> 1;
if (buscado == arreglo[medio]) return medio; // (*)
if (buscado < arreglo[medio])
hasta = medio-1;
else
desde = medio+1;
}
return NOT_FOUND;
}
(*) Tomando que el primer elemento está en posición [0], de otro modo:
return medio+1;
Ejemplo de uso:
Código C:
Ver original...
#define ELEM 15
#define NOT_FOUND -1
int binaria(int, int *, int);
int main()
{
int numeros[ELEM] = {0,1,7,9,10,12,15,20,32,35,38,42,53,70,90};
int x = binaria(11, numeros, ELEM);
if (x == NOT_FOUND)
else
printf("%d esta en la posicion %d",numeros
[x
], x
); ...
Saludos.