Blame view
node_modules/es5-ext/array/#/binary-search.js
601 Bytes
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
'use strict'; var toPosInt = require('../../number/to-pos-integer') , callable = require('../../object/valid-callable') , value = require('../../object/valid-value') , floor = Math.floor; module.exports = function (compareFn) { var length, low, high, middle; value(this); callable(compareFn); length = toPosInt(this.length); low = 0; high = length - 1; while (low <= high) { middle = floor((low + high) / 2); if (compareFn(this[middle]) < 0) high = middle - 1; else low = middle + 1; } if (high < 0) return 0; if (high >= length) return length - 1; return high; }; |