Busca Binária
Este script faz uma busca binária em um vetor (array), está simples e fácil de ser entendido, lembramos que o vetor deve estar ordenado para que seja possível fazer uma busca binária, para isso vc pode usar meu script de "ordenacao por selecao", qualquer bug encontrado por favor me avise no felipejfs@bol.com.br pois uso este script aqui em um site. Espero que lhe seja util este script. falou.
Descrição
Este script faz uma busca binária em um vetor (array), está simples e fácil de ser entendido, lembramos que o vetor deve estar ordenado para que seja possível fazer uma busca binária, para isso vc pode usar meu script de "ordenacao por selecao", qualquer bug encontrado por favor me avise no felipejfs@bol.com.br pois uso este script aqui em um site. Espero que lhe seja util este script. falou.
#!/bin/perl
#para uma busca binaria é necessario que o vetor esteja ordenado!!!!
@vetor=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20);
$x=3; #$x será o elemento à procurar.
$inicio=0;
$fim=@vetor; # $fim recebe o tamanho de @vetor.
$meio=int(($inicio+$fim)/2);
print "Procurando $x em ". "@vetor". "\n";
while (($x != @vetor[$meio]) && ($inicio!=$fim) && ($inicio<$fim))
{
if ($x > @vetor[$meio]) {$inicio=$meio+1}
else {$fim=$meio-1}
$meio=int(($inicio+$fim)/2);
}
if ($x == @vetor[$meio]){print "$x encontrado em @". "vetor[". $meio. "]\n";}
else {print "$x nao encontrado!! \n";}
ao invés de:
@vetor=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20);
você poderia ter feito:
@vetor = (1 .. 20);
E te recomendo também usar o pragma strict e o my pra definir o escopo das variáveis.