【JS】二分查找
题目
步骤
- 初始化指针:定义
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;
};
欢迎指正!
原文地址:https://blog.csdn.net/m0_74662483/article/details/140915088
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/97465.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mrgr.cn/news/97465.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!