Binary search: Difference between revisions
Content added Content deleted
m (Added to <10 category, stop separating task and examples with headers) |
No edit summary |
||
Line 171: | Line 171: | ||
return guess; |
return guess; |
||
} |
} |
||
=={{header|MAXScript}}== |
|||
===Iterative=== |
|||
fn binarySearchIterative arr value = |
|||
( |
|||
lower = 1 |
|||
upper = arr.count |
|||
while lower <= upper do |
|||
( |
|||
mid = (lower + upper) / 2 |
|||
if arr[mid] > value then |
|||
( |
|||
upper = mid - 1 |
|||
) |
|||
else if arr[mid] < value then |
|||
( |
|||
lower = mid + 1 |
|||
) |
|||
else |
|||
( |
|||
return mid |
|||
) |
|||
) |
|||
-1 |
|||
) |
|||
arr = #(1, 3, 4, 5, 6, 7, 8, 9, 10) |
|||
result = binarySearchIterative arr 6 |
|||
===Recursive=== |
|||
fn binarySearchRecursive arr value lower upper = |
|||
( |
|||
if lower == upper then |
|||
( |
|||
if arr[lower] == value then |
|||
( |
|||
return lower |
|||
) |
|||
else |
|||
( |
|||
return -1 |
|||
) |
|||
) |
|||
mid = (lower + upper) / 2 |
|||
if arr[mid] > value then |
|||
( |
|||
return binarySearchRecursive arr value lower (mid-1) |
|||
) |
|||
else if arr[mid] < value then |
|||
( |
|||
return binarySearchRecursive arr value (mid+1) upper |
|||
) |
|||
else |
|||
( |
|||
return mid |
|||
) |
|||
) |
|||
arr = #(1, 3, 4, 5, 6, 7, 8, 9, 10) |
|||
result = binarySearchRecursive arr 6 1 arr.count |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |