题目

步骤
- 初始化指针:定义
left和right两个指针,分别指向数组的起始位置和末尾位置,确定查找范围。- 进入循环:只要
left小于等于right,就继续执行循环,因为此时查找范围不为空。- 计算中间索引:通过公式
left + Math.floor((right - left) / 2)计算中间位置mid,以找到当前查找范围的中间元素。- 比较与调整:将中间元素
nums[mid]与目标值target进行比较。如果nums[mid]大于target,说明目标值在中间元素的左侧,将right指针更新为mid - 1,缩小查找范围到左半部分;如果nums[mid]小于target,说明目标值在中间元素的右侧,将left指针更新为mid + 1,缩小查找范围到右半部分;如果nums[mid]等于target,则表示找到了目标值,直接返回mid。- 查找失败处理:当循环结束时,如果仍未找到目标值,说明目标值不在数组中,返回
-1。
示例代码
var search = function (nums, target) {var left = 0, right = nums.length - 1;while (left <= right) {var mid = left + Math.floor((right - left) / 2);if (nums[mid] > target) {right = mid - 1;} else if (nums[mid] < target) {left = mid + 1;} else {return mid;}}return -1;
};
欢迎指正!
