ILA - Unisinos
ILA - Unisinos
ILA - Unisinos
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Aprendendo a Programar Programando numa Linguagem Algorítmica Executável (<strong>ILA</strong>) - Página 79<br />
Escrever x, " não encontrado"<br />
Fim_se<br />
Fim<br />
7.3 Pesquisa binária<br />
É fácil perceber que a pesquisa sequencial é muito ineficiente. Imagine que se queira<br />
pesquisar num dicionário o significado da palavra zumbaia. Pelo método anterior, começaríamos na<br />
letra a e iríamos de palavra em palavra até encontrar a palavra cujo significado estamos procurando<br />
(a propósito, zumbaia significa cortesia exagerada; cumprimento ruidoso e servil).<br />
Existe um método, chamado pesquisa binária, que se aplica quando o vetor possui seus<br />
elementos ordenados (que é o caso de um dicionário) e é bem mais eficiente que a pesquisa<br />
sequencial. Este método consiste em se comparar o valor a ser pesquisado x com o valor da<br />
componente que ocupa a posição central do vetor. Se x for igual a esta componente a pesquisa se<br />
encerra; se x for menor que esta componente, repete-se o raciocínio com a "metade inferior" do<br />
vetor; se x for maior que a componente central, repete-se o raciocínio com a "metade superior" do<br />
vetor. Isto se repete até que x seja encontrado ou que se tenha condições de se afirmar que x não está<br />
no vetor.<br />
Por exemplo, se se pretende pesquisar x = 16 no vetor Vet = (1, 2, 4, 7, 9, 11, 13, 14, 16, 18,<br />
19, 22, 24), compara-se 16 com o termo central do vetor (13); como x é maior que este termo<br />
central, repete-se o raciocínio com o vetor Vet1 = (14, 16, 18, 19, 22, 24). Assim compara-se 16<br />
com o novo "termo central" 18; como x é menor, raciocina-se com o vetor Vet2 = (14, 16). Agora o<br />
termo central é 14 e x é maior que ele. Passa-se então para o vetor Vet3 = {16} e aí a pesquisa se<br />
encerra com sucesso. O interessante da implementação deste método é que não há necessidade da<br />
criação destes vetores. Eles são criados abstratamente através de duas variáveis Prim e Ult que<br />
estabelecem quais são as primeira e última componentes do vetor que se está analisando.<br />
//Programa para pesquisa pelo método da pesquisa binária<br />
Variaveis<br />
Numerico Aux, i, x, Prim, Ult, Cent<br />
Matriz numerico Vet[50]<br />
Inicio<br />
Escrever "Digite os elementos da relação (-1 para encerrar)"<br />
Ler Aux<br />
Vet[1] = Aux<br />
i = 1<br />
Faca enquanto Vet[i] -1<br />
Ler Aux<br />
i = i + 1<br />
Vet[i] = Aux<br />
Fim_enquanto<br />
i = i - 1<br />
//Comandos para a pesquisa binária<br />
Escrever "Digite o valor a ser pesquisado"<br />
Ler x<br />
Prim = 1<br />
Ult = i<br />
Cent = Inteiro((Prim + Ult)/2)<br />
Faca enquanto (Vet[Cent] x) e (Prim < Ult)<br />
Se Vet[Cent] > x entao<br />
Ult = Cent - 1<br />
Senao