Hola m@o_614.
no seria mas logico dividir el tamanio del vector sobre 2 sin necesidad de hacer la dichosa suma???
Definitivamente creo que no.
Pongamos como ejemplo la búsqueda dicotómica:
...
#define ELEM_NOT_FOUND -1
int binaria(int buscado, int *arreglo, int fin)
{
int inicio = 0, medio;
--fin;
while(inicio <= fin) {
medio = (inicio + fin) >> 1;
if (buscado == arreglo[medio]) return medio;
if (buscado < arreglo[medio])
fin = medio - 1; // la lista se redujo a: 0 - medio-1
else
inicio = medio + 1; // la lista se redujo a: medio+1 - fin
}
return ELEM_NOT_FOUND;
}
...
En cada cliclo si el número buscado es mayor que el ubicado en el medio de la lista de elementos, se elimina la mitad inferior de esta, de lo contrario la superior. Y así se sigue reduciendo la lista de elementos a la mitad hasta que se encuentra el elemento o no haya mas elementos que buscar.
Esto no sucedería si siempre tomáramos como cotas a 0 y la cantidad total de elementos.
de que me sirve la variable ini??
Las variables inicio y fin van variando sus valores acorde a los condicionales como muestra el código anterior y sirven para fijar los nuevos límites luego de reducir la lista de elementos a la mitad en cada ciclo.
Saludos