28 lines
567 B
JavaScript
28 lines
567 B
JavaScript
function binaryIndexOf(searchElement) {
|
|
'use strict';
|
|
|
|
var minIndex = 0;
|
|
var maxIndex = this.length - 1;
|
|
var currentIndex;
|
|
var currentElement;
|
|
var resultIndex;
|
|
|
|
while (minIndex <= maxIndex) {
|
|
resultIndex = currentIndex = (minIndex + maxIndex) / 2 | 0;
|
|
currentElement = this[currentIndex];
|
|
|
|
if (currentElement < searchElement) {
|
|
minIndex = currentIndex + 1;
|
|
}
|
|
else if (currentElement > searchElement) {
|
|
maxIndex = currentIndex - 1;
|
|
}
|
|
else {
|
|
return currentIndex;
|
|
}
|
|
}
|
|
|
|
return ~maxIndex;
|
|
}
|
|
|
|
Array.prototype.binaryIndexOf = binaryIndexOf; |