21 lines
546 B
Text
21 lines
546 B
Text
declare
|
|
fun {BinarySearch Arr Val}
|
|
fun {Search Low High}
|
|
if Low > High then nil
|
|
else
|
|
Mid = (Low+High) div 2
|
|
in
|
|
if Val < Arr.Mid then {Search Low Mid-1}
|
|
elseif Val > Arr.Mid then {Search Mid+1 High}
|
|
else [Mid]
|
|
end
|
|
end
|
|
end
|
|
in
|
|
{Search {Array.low Arr} {Array.high Arr}}
|
|
end
|
|
|
|
A = {Tuple.toArray unit(2 3 5 6 8)}
|
|
in
|
|
{System.printInfo "searching 4: "} {Show {BinarySearch A 4}}
|
|
{System.printInfo "searching 8: "} {Show {BinarySearch A 8}}
|