'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var isSorted = require('./isSorted');
exports = function(arr, val) {
    var cmp =
        arguments.length > 2 && arguments[2] !== undefined
            ? arguments[2]
            : isSorted.defComparator;
    var startIdx = 0;
    var endIdx = arr.length - 1;
    while (startIdx <= endIdx) {
        var middleIdx = startIdx + Math.floor((endIdx - startIdx) / 2);
        var middleVal = arr[middleIdx];
        if (cmp(middleVal, val) === 0) {
            return middleIdx;
        }
        if (cmp(middleVal, val) < 0) {
            startIdx = middleIdx + 1;
        } else {
            endIdx = middleIdx - 1;
        }
    }
    return -1;
};
 
module.exports = exports;