( table: unknown[], value: number, cmp?: (value: number) => boolean )
| 18 | cmp: (value: number) => boolean |
| 19 | ): {lo: number, hi: number}; |
| 20 | export function _lookup( |
| 21 | table: unknown[], |
| 22 | value: number, |
| 23 | cmp?: (value: number) => boolean |
| 24 | ) { |
| 25 | cmp = cmp || ((index) => table[index] < value); |
| 26 | let hi = table.length - 1; |
| 27 | let lo = 0; |
| 28 | let mid: number; |
| 29 | |
| 30 | while (hi - lo > 1) { |
| 31 | mid = (lo + hi) >> 1; |
| 32 | if (cmp(mid)) { |
| 33 | lo = mid; |
| 34 | } else { |
| 35 | hi = mid; |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | return {lo, hi}; |
| 40 | } |
| 41 | |
| 42 | /** |
| 43 | * Binary search |
no outgoing calls
no test coverage detected