20 lines
585 B
Text
20 lines
585 B
Text
binarySearch: function [arr,val,low,high][
|
|
if high < low -> return ø
|
|
mid: shr low+high 1
|
|
case [val]
|
|
when? [< arr\[mid]] -> return binarySearch arr val low mid-1
|
|
when? [> arr\[mid]] -> return binarySearch arr val mid+1 high
|
|
else -> return mid
|
|
]
|
|
|
|
ary: [
|
|
0 1 4 5 6 7 8 9 12 26 45 67
|
|
78 90 98 123 211 234 456 769
|
|
865 2345 3215 14345 24324
|
|
]
|
|
|
|
loop [0 42 45 24324 99999] 'v [
|
|
i: binarySearch ary v 0 (size ary)-1
|
|
if? not? null? i -> print ["found" v "at index:" i]
|
|
else -> print [v "not found"]
|
|
]
|