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); |
|||
} |
|||
} |
} |
||