Binary search: Difference between revisions
Content added Content deleted
No edit summary |
(Binary search in BASIC256) |
||
Line 1,672: | Line 1,672: | ||
680 RETURN |
680 RETURN |
||
</lang> |
</lang> |
||
=={{header|BASIC256}}== |
|||
====Recursive Solution==== |
|||
<lang BASIC256>function binarySearchR(array, valor, lb, ub) |
|||
if ub < lb then |
|||
return false |
|||
else |
|||
mitad = floor((lb + ub) / 2) |
|||
if valor < array[mitad] then return binarySearchR(array, valor, lb, mitad-1) |
|||
if valor > array[mitad] then return binarySearchR(array, valor, mitad+1, ub) |
|||
if valor = array[mitad] then return mitad |
|||
end if |
|||
end function</lang> |
|||
====Iterative Solution==== |
|||
<lang BASIC256>function binarySearchI(array, valor) |
|||
lb = array[?,] |
|||
ub = array[?] |
|||
while lb <= ub |
|||
mitad = floor((lb + ub) / 2) |
|||
begin case |
|||
case array[mitad] > valor |
|||
ub = mitad - 1 |
|||
case array[mitad] < valor |
|||
lb = mitad + 1 |
|||
else |
|||
return mitad |
|||
end case |
|||
end while |
|||
return false |
|||
end function</lang> |
|||
'''Test:''' |
|||
<lang BASIC256>items = 10e5 |
|||
dim array(items) |
|||
for n = 0 to items-1 : array[n] = n : next n |
|||
t0 = msec |
|||
print binarySearchI(array, 3) |
|||
print msec - t0; " millisec" |
|||
t1 = msec |
|||
print binarySearchR(array, 3, array[?,], array[?]) |
|||
print msec - t1; " millisec" |
|||
end</lang> |
|||
{{out}} |
|||
<pre>3 |
|||
839 millisec |
|||
3 |
|||
50 millisec</pre> |
|||
=={{header|Batch File}}== |
=={{header|Batch File}}== |