@jcoreio/precise-bs
Version:
binary search and related utility functions
86 lines (74 loc) • 1.67 kB
Flow
// @flow
export type Comparator<T> = (a: T, b: T) => number
type NumberArray =
| Int8Array
| Int16Array
| Int32Array
| Uint8Array
| Uint16Array
| Uint32Array
| Float64Array
| Float32Array
| Array<number>
type SearchFn = {
(
array: NumberArray,
find: number,
comparator?: Comparator<number>,
low?: number,
high?: number
): number,
<T>(
array: Array<T>,
find: T,
comparator?: Comparator<T>,
low?: number,
high?: number
): number,
}
type EntryFn = {
(
array: NumberArray,
find: number,
comparator?: Comparator<number>,
low?: number,
high?: number
): [number, number | void],
<T>(
array: Array<T>,
find: T,
comparator?: Comparator<T>,
low?: number,
high?: number
): [number, T | void],
}
type ValueFn = {
(
array: NumberArray,
find: number,
comparator?: Comparator<number>,
low?: number,
high?: number
): number | void,
<T>(
array: Array<T>,
find: T,
comparator?: Comparator<T>,
low?: number,
high?: number
): T | void,
}
declare export var DEFAULT_COMPARATOR: Comparator<any>
declare export var binarySearch: SearchFn
declare export var ceilingIndex: SearchFn
declare export var ceilingEntry: EntryFn
declare export var ceilingValue: ValueFn
declare export var floorIndex: SearchFn
declare export var floorEntry: EntryFn
declare export var floorValue: ValueFn
declare export var higherIndex: SearchFn
declare export var higherEntry: EntryFn
declare export var higherValue: ValueFn
declare export var lowerIndex: SearchFn
declare export var lowerEntry: EntryFn
declare export var lowerValue: ValueFn