Olá. O segredo é a função de comparação. Não sei se precisa de alguma linguagem específica, mas senão, suponha que existe uma função que compara strings: integer strcmp(string1, string2) retorna 1 se string1 > string2 retorna -1 se string1 < string2 retorna 0 se string1 = string2 observe que os operadores de comparação são lexicográficos. Dependendo da aplicação isso pode gerar problemas pois: "100" < "20" -- comparação lexicográfica 100 > 20 -- comparação numérica Sobre a busca seqüencial - simples e ineficiente: faça um loop que percorra o vetor até encontrar o que você quer (ou seja, quando strcmp(str1,str2) = 0) ou até o final (se não encontrar). pseudo-código: enquanto não fim do vetor faça;
se strcmp(string,vetor[i]) = 0
retorne i;
fim enquanto;
retorne FALSE;
Sobre a busca binária - não tão simples e eficiente:
primeira coisa: o vetor tem de estar ordenado sob strcmp().
Aqui você define um max e um min, que são os limites da procura, você reduz os limites de acordo com o resultado da comparação.
pseudo-código:
min = 0, max = tamanho do vetor;
enquanto (max > min) faca
mid = (min+max)/2;
res = strcmp(string,vetor[mid]);
// a string que deseja está na metade superior dos limites considerados
se (res > 0) faça
min = mid;
// a string que deseja está na metade inferior dos limites considerados
senão se (res < 0) faça
max = mid;
// strcmp = 0. logo, encontramos a string desejada.
senão
retorne mid;
fim enquanto
retorne FALSE;
PS: tem que ver os limites direitinho, somando 1 aqui e ali, pois isso aqui é só um rascunho rápido!