Ver Mensaje Individual
  #3 (permalink)  
Antiguo 29/08/2013, 11:17
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: programacion en c , busqueda binaria en un array

Hola eke_ps.

Creo que podes simplificar la función de búsqueda:
Código C:
Ver original
  1. int binaria(int buscado, int *arreglo, int hasta)
  2. {
  3.   int desde = 0, medio;
  4.   --hasta;
  5.   while(desde <= hasta) {
  6.     medio = (hasta+desde) >> 1;
  7.     if (buscado == arreglo[medio]) return medio; // (*)
  8.     if (buscado < arreglo[medio])
  9.       hasta = medio-1;
  10.     else
  11.       desde = medio+1;
  12.   }
  13.   return NOT_FOUND;
  14. }
(*) Tomando que el primer elemento está en posición [0], de otro modo: return medio+1;

Ejemplo de uso:
Código C:
Ver original
  1. ...
  2. #define ELEM 15
  3. #define NOT_FOUND -1
  4.  
  5. int binaria(int, int *, int);
  6.  
  7. int main()
  8. {
  9.   int numeros[ELEM] = {0,1,7,9,10,12,15,20,32,35,38,42,53,70,90};
  10.   int x = binaria(11, numeros, ELEM);
  11.  
  12.   if (x == NOT_FOUND)
  13.     printf("No encontrado");
  14.   else
  15.     printf("%d esta en la posicion %d",numeros[x], x);
  16. ...

Saludos.