二分查找
请实现有重复数字的升序数组的二分查找
给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1
身为菜鸡的我,现在记住提到有序数组查找就要用到二分查找。
错误:一直在用for循环。。。。应该用while。
看到比较好的方法:定义一个找到的目标值,给这个值赋值,而不是在while循环中返回找到的mid或-1.
function search( nums , target ) {
// write code here
//判断边界
if(nums==null||nums.length==0)
return -1;
//二分查找
var start = 0;
var end = nums.length-1;
var idx=-1;
while(start<=end){
var mid = Math.floor((start+end)/2);
if(target<nums[mid]){
end=mid-1;
}else if(target>nums[mid]){
start=mid+1;
}else if(target == nums[mid]){
idx=mid;
end=mid-1;
}
}
return idx;
}
module.exports = {
search : search
};