21 lines
646 B
JavaScript
21 lines
646 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound
|
|
// Used to compute insertion index to keep queue sorted after insertion
|
|
function lowerBound(array, value, comparator) {
|
|
let first = 0;
|
|
let count = array.length;
|
|
while (count > 0) {
|
|
const step = (count / 2) | 0;
|
|
let it = first + step;
|
|
if (comparator(array[it], value) <= 0) {
|
|
first = ++it;
|
|
count -= step + 1;
|
|
}
|
|
else {
|
|
count = step;
|
|
}
|
|
}
|
|
return first;
|
|
}
|
|
exports.default = lowerBound;
|