@aegenet/belt-binary-search
Version:
Binary search
3 lines (2 loc) • 641 B
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function l(t,f,n,r=0,i=t.length){const e=Math.floor(r+(i-r)/2),u=n(t[e],f);return u!==0&&(e===0||e===t.length-1)?null:u>0?e===i?null:l(t,f,n,r,e):u<0?e===r?null:l(t,f,n,e,i):{value:t[e],index:e}}function o(t,f,n){if(!n)if(typeof f=="string")n=(i,e)=>i.localeCompare(e);else if(typeof f=="number"||typeof f=="bigint")n=(i,e)=>i-e;else throw new Error("Invalid usage: you must specify a comparator if your searchValue is an object.");const r=t.slice(0).sort(n);return l(r,f,n)}exports.binarySearch=l;exports.safeBinarySearch=o;
//# sourceMappingURL=index.cjs.map