Creo que te refieres a la busqueda binaria (dado que dices que se busca un numero x);
esta funcion realiza dicha tarea.
Donde cont es el numero de elementos, *lista un puntero a la lista ORDENADA de todos
los valores y clave el valor x a buscar.
La lista debe estar ordenada, es TOTALMENTE INDISPENSABLE. El numero maximo de
comparaciones (en el peor caso) es bastante menor que en la busqueda secuencial
(log2n (busqueda binaria) frente a n (secuencial)), pero repito (y no me cansare)
que la lista debe estar ordenada. Como observaras el algoritmo es simple e inteligible.
int busqueda_binaria ( int *lista , int cont , int clave )
{
int bajo,alto,medio;
bajo=0;
alto=cont-1;
while(bajo<=alto)
{
medio = (bajo+alto)/2;
if (clave < lista[medio]) alto = medio-1;
else if (clave > lista[medio]) bajo = medio+1;
else return medio; /* encontrado */
}
return -1; /* No encontrado */
}
Espero que fuera esta tu pregunta; si no lo era, siento el espacio ocupado.
Saludos
Un Aprendiz