二分法:每次从有序数据中间找起,每次对比返回有三个结果,找的结果比目标大,比目标小,等于目标。根据结果的大小来查找
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
//设置查找范围的开头和结尾,猜的数,中间数;
var low = 0,
height = nums.length - 1,
guess = 0,
mid = 0;
while(low <= height){ //范围只要没缩小到只包含一个元素
//如果中间数不是偶数,向下圆整
mid = Math.floor((low + height)/2);
guess = nums[mid];
if(guess == target){ //相等回下标
return mid;
}
else if(guess > target){ //猜的数字小了
height = mid - 1;
}
else{ //猜的数字大了
low = mid + 1;
}
}
return -1;
};