function BinarySearch(items, value) {
var start = 0,
stop = items.length - 1,
mid = Math.floor((stop + start) / 2);
while (items[mid] !== value && start < stop) {
if (value < items[mid]) {
stop = mid - 1;
} else if (value > items[mid]) {
start = mid + 1;
}
mid = Math.floor((stop + start) / 2);
}
var output = (items[mid] != value) ? -1 : mid;
return output;
}
var arr = [5, 6, 7, 8, 9, 10, 1, -1, 2, 3];
var key = -1;
var ans = BinarySearch(arr, key);
console.log("ans is " + ans);
我试图找到 - 1,使用二进制搜索但它给出了不正确的结果。如果所有数组元素都是正数,这样工作正常但是如果数组元素包含元素值并且我们试图找到负值,则它给出不正确的结果。