Binary search: Difference between revisions

Content added Content deleted
m (Added to recursion category)
(Add perl version.)
Line 173: Line 173:
}
}
return guess;
return guess;
}

=={{header|Perl}}==
===Iterative===
sub binary_search {
($array_ref, $value, $left, $right) = @_;
while ($left <= $right) {
$middle = ($right + $left) / 2;
if ($array_ref->[$middle] == $value) {
return 1;
}
if ($value < $array_ref->[$middle]) {
$right = $middle - 1;
} else {
$left = $middle + 1;
}
}
return 0;
}

===Recursive===
sub binary_search {
($array_ref, $value, $left, $right) = @_;
if ($right < $left) {
return 0;
}
$middle = ($right + $left) / 2;
if ($array_ref->[$middle] == $value) {
return 1;
}
if ($value < $array_ref->[$middle]) {
binary_search($array_ref, $value, $left, $middle - 1);
} else {
binary_search($array_ref, $value, $middle + 1, $right);
}
}
}