逐次探索

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

逐次探索

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

sub search
{
    my @ary = @_;
    my $key = $ary[0];
    my $no  = $ary[1];
    
    $i = 2;
    while (1)
    {
        return $FAILED if ($i       == $no + 2);
        return $i - 1  if ($ary[$i] == $key) ;
        $i++;
    }
}

@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_049.pl
18は、見つかりませんでした。
499は、4番目にあります。