10 lines
542 B
APL
10 lines
542 B
APL
|
|
binsrch←{
|
|||
|
|
⎕IO(⍺{ ⍝ first lower bound is start of array
|
|||
|
|
⍵<⍺:⍬ ⍝ if high < low, we didn't find it
|
|||
|
|
mid←⌊(⍺+⍵)÷2 ⍝ calculate mid point
|
|||
|
|
⍺⍺[mid]>⍵⍵:⍺∇mid-1 ⍝ if too high, search from ⍺ to mid-1
|
|||
|
|
⍺⍺[mid]<⍵⍵:(mid+1)∇⍵ ⍝ if too low, search from mid+1 to ⍵
|
|||
|
|
mid ⍝ otherwise, we did find it
|
|||
|
|
}⍵)⎕IO+(≢⍺)-1 ⍝ first higher bound is top of array
|
|||
|
|
}
|