UNPKG

@extra-array/bsearch

Version:

Binary searches leftmost value in sorted array.

26 lines 753 B
import id from './_id'; import cmp from './_cmp'; /** * Binary searches leftmost value in sorted array. * @param x an array (sorted) * @param v search value * @param fc compare function (a, b) * @param fm map function (v, i, x) * @returns first index of value | ~(index of closest value) */ function bsearch(x, v, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var v1 = fm(v, 0, null); for (var i = 0, I = x.length; i < I;) { var m = i + I >>> 1; var u1 = fm(x[m], m, x); var c = fc(u1, v1); if (c < 0) i = m + 1; else I = m; } return i >= x.length || fc(fm(x[i], i, x), v1) !== 0 ? ~i : i; } export default bsearch; //# sourceMappingURL=index.js.map