二分搜索 binary search - lzxassj/Some-things GitHub Wiki
非递归
/**
* 返回-1代表target不在nums中,大于-1代表target在nums中的索引值
* @param nums 入参数组
* @param target 待查找数字
* @param low 开始位置
* @param high 结束位置
* @return 当前数组索引或-1
*/
var binarySearch = function(nums, target, low, high) {
var _low = low === void 0 ? 0 : low;
var _high = high === void 0 ? nums.length -1 : 0;
while(_low < _high) {
var middle = _low + Math.floor((_high - _low) / 2);
if(nums[middle] === target) {
return middle;
}
if(target < nums[middle]) {
_high = middle - 1;
} else {
_low = middle + 1;
}
}
return -1;
}
var nums = [1,4324,24,42,43,21,27,100,88,85,434];
console.log(binarySearch(nums, 88));
// 输出8