在Java中实现二分搜索时,处理边界问题是非常重要的。以下是一个处理边界问题的二分搜索示例:
public int binarySearch(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return -1;
}
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
在这个示例中,我们首先检查输入数组是否为空或长度为0,如果是,则返回-1表示未找到目标值。
接下来,我们初始化两个指针left和right,分别指向数组的起始和结束位置。在while循环中,我们计算中间索引mid,并比较nums[mid]与目标值target。
nums[mid]等于target,则返回mid。nums[mid]小于target,则将left指针移动到mid + 1,因为我们知道目标值在mid右侧。nums[mid]大于target,则将right指针移动到mid - 1,因为我们知道目标值在mid左侧。注意循环条件是left <= right,这样可以确保在搜索范围内处理边界问题。当left大于right时,表示已经搜索完整个数组,此时返回-1表示未找到目标值。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。