include node_modules so release .zip is deployable
This commit is contained in:
+95
@@ -0,0 +1,95 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.binary_search = exports.equal_range = exports.upper_bound = exports.lower_bound = void 0;
|
||||
var Pair_1 = require("../utility/Pair");
|
||||
var global_1 = require("../iterator/global");
|
||||
var comparators_1 = require("../functional/comparators");
|
||||
/* =========================================================
|
||||
BINARY SEARCH
|
||||
========================================================= */
|
||||
/**
|
||||
* Get iterator to lower bound.
|
||||
*
|
||||
* @param first Input iterator of the first position.
|
||||
* @param last Input iterator of the last position.
|
||||
* @param val Value to search for.
|
||||
* @param comp A binary function predicates *x* element would be placed before *y*. When returns `true`, then *x* precedes *y*. Default is {@link less}.
|
||||
*
|
||||
* @return Iterator to the first element equal or after the val.
|
||||
*/
|
||||
function lower_bound(first, last, val, comp) {
|
||||
if (comp === void 0) { comp = comparators_1.less; }
|
||||
var count = (0, global_1.distance)(first, last);
|
||||
while (count > 0) {
|
||||
var step = Math.floor(count / 2);
|
||||
var it = (0, global_1.advance)(first, step);
|
||||
if (comp(it.value, val)) {
|
||||
first = it.next();
|
||||
count -= step + 1;
|
||||
}
|
||||
else
|
||||
count = step;
|
||||
}
|
||||
return first;
|
||||
}
|
||||
exports.lower_bound = lower_bound;
|
||||
/**
|
||||
* Get iterator to upper bound.
|
||||
*
|
||||
* @param first Input iterator of the first position.
|
||||
* @param last Input iterator of the last position.
|
||||
* @param val Value to search for.
|
||||
* @param comp A binary function predicates *x* element would be placed before *y*. When returns `true`, then *x* precedes *y*. Default is {@link less}.
|
||||
*
|
||||
* @return Iterator to the first element after the key.
|
||||
*/
|
||||
function upper_bound(first, last, val, comp) {
|
||||
if (comp === void 0) { comp = comparators_1.less; }
|
||||
var count = (0, global_1.distance)(first, last);
|
||||
while (count > 0) {
|
||||
var step = Math.floor(count / 2);
|
||||
var it = (0, global_1.advance)(first, step);
|
||||
if (!comp(val, it.value)) {
|
||||
first = it.next();
|
||||
count -= step + 1;
|
||||
}
|
||||
else
|
||||
count = step;
|
||||
}
|
||||
return first;
|
||||
}
|
||||
exports.upper_bound = upper_bound;
|
||||
/**
|
||||
* Get range of equal elements.
|
||||
*
|
||||
* @param first Input iterator of the first position.
|
||||
* @param last Input iterator of the last position.
|
||||
* @param val Value to search for.
|
||||
* @param comp A binary function predicates *x* element would be placed before *y*. When returns `true`, then *x* precedes *y*. Default is {@link less}.
|
||||
*
|
||||
* @return Pair of {@link lower_bound} and {@link upper_bound}.
|
||||
*/
|
||||
function equal_range(first, last, val, comp) {
|
||||
if (comp === void 0) { comp = comparators_1.less; }
|
||||
first = lower_bound(first, last, val, comp);
|
||||
var second = upper_bound(first, last, val, comp);
|
||||
return new Pair_1.Pair(first, second);
|
||||
}
|
||||
exports.equal_range = equal_range;
|
||||
/**
|
||||
* Test whether a value exists in sorted range.
|
||||
*
|
||||
* @param first Input iterator of the first position.
|
||||
* @param last Input iterator of the last position.
|
||||
* @param val Value to search for.
|
||||
* @param comp A binary function predicates *x* element would be placed before *y*. When returns `true`, then *x* precedes *y*. Default is {@link less}.
|
||||
*
|
||||
* @return Whether the value exists or not.
|
||||
*/
|
||||
function binary_search(first, last, val, comp) {
|
||||
if (comp === void 0) { comp = comparators_1.less; }
|
||||
first = lower_bound(first, last, val, comp);
|
||||
return !first.equals(last) && !comp(val, first.value);
|
||||
}
|
||||
exports.binary_search = binary_search;
|
||||
//# sourceMappingURL=binary_search.js.map
|
||||
Reference in New Issue
Block a user