RE:¿Como ordenar alfabeticamente?
La búsqueda binaria mira en el centro del vector. Si el nombre es mayor alfabéticamente que el buscado, mira en el lado izquierdo, y si no, en el lado derecho. Para mirar en cada uno de esos lados repite la operación (comprueba el nombre buscado con el del centro, y comprueba en uno u otro lado). Eso puede hacerse porque la lista está ordenada.
Para programarlo lo más cómodo es usar recursión, aunque es posible realizarlo con un simple bucle.
Te mando un ejemplo de recursión, que busca un número en un array ordenado de números. Si lo encuentra, devuelve la posición en el array del número, y si no, devuelve -1. Pasarlo a tu caso con cadenas no debería ser muy dificil, y, si tienes ganas, hasta puedes pasarlo a un bucle...
int buscar_binario(int buscado, int min, int max, int *numeros) {
int aux;
if (min == max)
if (numeros[min] == buscado)
return min;
else
return -1;
if min > max
return -1;
aux = (max + min) / 2;
if (numeros[aux] > buscado)
return buscar_binario(buscado, min, aux-1);
else
return buscar_binario(buscado, aux, max);
}
P.D. No lo he probado, pero parece que funciona...