Pesquisa binária: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Desfeita a edição 44308549 de 95.95.119.68
Linha 178:
<source lang="pascal">
program Ordenamento;
 
function BuscaBinaria (Vetor: array of string; Chave: string; Dim: integer): integer;
var inicio, fim: integer; {Auxiliares que representam o inicio e o fim do vetor analisado}
var
meio: integer; {Meio do vetor}
var inicio, fim: integer; {Auxiliares que representam o inicio e o fim do vetor analisado}
begin
meio: integer; {Meio do vetor}
begin
fim := Dim; {O valor do último índice do vetor}
inicio := 1; {O valor do primeiro índice do vetor}
BuscaBinaria := -1; {Retorna o valor -1 se a chave nao for encontrada.}
repeat
meio := (inicio+fim) div 2;
if (Chave = vetor[meio]) then
begin
BuscaBinaria := meio;
inicio:=fim+1; {Interrompo o repeat quando a chave for encontrada sem ter que testar lá no until. Bonito não?!}
end;
if (Chave < vetor[meio]) then
fim:=(meio-1);
if (Chave > vetor[meio]) then
inicio:=(meio+1);
until (inicio >= fim);
end;
</source>