题解 | #二分查找-I#javascript的解法
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
数组中间的元素开始比较,如果中间的元素正好等于目标值,则搜索结束;如果目标值大于或小于中间的元素,则在大于或小于中间的元素的那一半继续搜索,然后重复进行比较,直到最后找到他
第一步: 定义查找的范围 [left,right],初始查找范围是整个数组。
第二步:每次取查找范围的中点 mid,比较 nums[mid] 和 target的大小,如果相等则 mid即为要寻找的下标。
第三步: 如果不相等则根据 nums[mid]和 target的大小关系将查找范围缩小一半
第四步:继续从第一步开始重复执行
var search = function(nums, target) { // 在区间[left,right]中查找元素,左闭右闭 let left = 0; let right = nums.length - 1; while (left <= right) { // 计算中间点 let mid = parseInt(left + (right-left)/2); if (target == nums[mid]) { return mid; // 如果target < nums[mid],表示目标值可能在左半边 } else if (target < nums[mid]){ right = mid - 1; // 如果target > nums[mid],表示目标值可能在右半边 } else if (target > nums[mid]){ left = mid + 1; } } // 未找到返回-1 return -1; };#算法题#