逐次探索 (番兵)

明解C言語 入門編 > 6. 関数 >

逐次探索 (番兵)

Perl
$NINSU  =  5;
$FAILED = -1;

sub search
{
    my ($key, $no, $ary) = @_;
    $$ary[$$no] = $$key;
    
    $i = 0;
    while (1)
    {
        last if ($$ary[$i] == $$key);
        $i++;
    }

    return ($i == $$no ? $FAILED : $i + 1);
}

@ary = (83, 55, 777, 499, 20);
$key = 18;
$idx = &search(\$key, \$NINSU, \@ary);
if ($idx == $FAILED)
{
    print "$keyは、見つかりませんでした。\n";
}
else
{
    print "$keyは、$idx番目にあります。\n";
}

$key = 499;
$idx = &search(\$key, \$NINSU, \@ary);
if ($idx == $FAILED)
{
    print "$keyは、見つかりませんでした。\n";
}
else
{
    print "$keyは、$idx番目にあります。\n";
}

実行結果

L:\>perl lesson_06_050.pl
18は、見つかりませんでした。
499は、4番目にあります。