1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.bisect = void 0;
|
4 | /**
|
5 | * 在一个升序的序列指定范围内 array[lo, hi) 二分查找一个值 x,返回最右边一个匹配的值后面的索引 i
|
6 | * https://github.com/d3/d3-array/blob/master/src/bisector.js
|
7 | * @param array 升序的目标数组
|
8 | * @param x 查找的值
|
9 | * @param lo 开始的索引
|
10 | * @param hi 结束的索引
|
11 | * @returns 最右边一个匹配的值后一个的索引
|
12 | */
|
13 | function bisect(array, x, lo, hi, getter) {
|
14 | let i = lo || 0;
|
15 | let j = hi || array.length;
|
16 | const get = getter || ((x) => x);
|
17 | while (i < j) {
|
18 | const mid = Math.floor((i + j) / 2);
|
19 | if (get(array[mid]) > x) {
|
20 | j = mid;
|
21 | }
|
22 | else {
|
23 | i = mid + 1;
|
24 | }
|
25 | }
|
26 | return i;
|
27 | }
|
28 | exports.bisect = bisect;
|
29 | //# sourceMappingURL=bisect.js.map |
\ | No newline at end of file |