import type { Comparator, Fn, FnN, FnN2 } from "@thi.ng/api"; /** * Returns the supposed index of `x` in pre-sorted array-like collection `buf`. * * @remarks * If `x` can't be found, returns `-index-1`, representing the negative of the * index, were `x` to be inserted into `buf`. E.g if the return value is -3, `x` * would appear/insert at index 2. * * The optional `key` function is used to obtain the actual sort value of `x` * and each array item (default: identity). * * The optional `cmp` comparator (default: * [`compare`](https://docs.thi.ng/umbrella/compare/functions/compare.html)) is * then used to identify the index of `x`. The sort order of `buf` MUST be * compatible with that of `cmp`. * * @example * ```ts tangle:../export/binary-search1.ts * import { binarySearch } from "@thi.ng/arrays"; * * console.log( * binarySearch([2, 4, 6], 5) * ); * // -3 * ``` * * @param buf - array * @param x - search value * @param key - key function * @param cmp - comparator * @param low - min index * @param high - max index */ export declare const binarySearch: (buf: ArrayLike, x: A, key?: Fn, cmp?: Comparator, low?: number, high?: number) => number; /** * Similar to {@link binarySearch}, but optimized for numeric arrays and * supporting custom comparators (default: * [`compareNumAsc`](https://docs.thi.ng/umbrella/compare/functions/compareNumAsc.html)). * * @param buf - array * @param x - search value * @param cmp - comparator * @param low - min index * @param high - max index */ export declare const binarySearchNumeric: (buf: ArrayLike, x: number, cmp?: Comparator, low?: number, high?: number) => number; export declare const binarySearch2: (buf: ArrayLike, x: number) => number; /** * Non-recursive, optimized binary search for fixed size numeric arrays of 4 * values. Returns index of `x` or `-index-1` if not found. * * @param buf - * @param x - */ export declare const binarySearch4: (buf: ArrayLike, x: number) => number; /** * Non-recursive, optimized binary search for fixed size numeric arrays of 8 * values. Returns index of `x` or `-index-1` if not found. * * @param buf - * @param x - */ export declare const binarySearch8: (buf: ArrayLike, x: number) => number; /** * Non-recursive, optimized binary search for fixed size numeric arrays of 16 * values. Returns index of `x` or `-index-1` if not found. * * @param buf - * @param x - */ export declare const binarySearch16: (buf: ArrayLike, x: number) => number; /** * Non-recursive, optimized binary search for fixed size numeric arrays of 32 * values. Returns index of `x` or `-index-1` if not found. * * @param buf - * @param x - */ export declare const binarySearch32: (buf: ArrayLike, x: number) => number; /** * {@link binarySearch} result index classifier for predecessor queries. * Returns index of last item less than search value or -1 if no such * values exist. * * @example * ```ts tangle:../export/binary-search2.ts * import { binarySearch, bsLT } from "@thi.ng/arrays"; * * console.log( * bsLT(binarySearch([10, 20, 30, 40], 25)) * ) * // 1 * ``` * * @param i - binarySearch result index */ export declare const bsLT: FnN; /** * Similar to {@link bsLT}, but for less-than-equals queries. * * @param i - binarySearch result index */ export declare const bsLE: FnN; /** * {@link binarySearch} result index classifier for successor queries. * Returns index of first item greater than search value or -1 if no * such values exist. * * @example * ```ts tangle:../export/binary-search3.ts * import { binarySearch, bsGT } from "@thi.ng/arrays"; * * const src = [10, 20, 30, 40]; * * console.log( * bsGT(binarySearch(src, 25), src.length) * ) * // 2 * * console.log( * bsGT(binarySearch(src, 40), src.length) * ) * // -1 * ``` * * @param i - binarySearch result index * @param n - array length */ export declare const bsGT: FnN2; /** * Similar to {@link bsGT}, but for greater-than-equals queries. * * @param i - binarySearch result index * @param n - array length */ export declare const bsGE: FnN2; /** * {@link binarySearch} result index classifier for equals queries. * Merely syntax sugar, casting any non-found result indices to -1. * * @param i - binarySearch result index */ export declare const bsEQ: FnN; //# sourceMappingURL=binary-search.d.ts.map