我正在尝试编写二进制搜索算法,但是Geeks for Geeks 练习问题 Binary Search产生以下错误:
Runtime Error:
Runtime ErrorException in thread "main" java.lang.ArrayIndexOutOfBoundsException:
Index 222 out of bounds for length 5
at Solution.binarysearch(GFG.java:44)
at GFG.main(GFG.java:22)
到目前为止我写的是,
class Solution {
int binarysearch(int arr[], int n, int k){
if (arr == null) return -1;
int begin = 0;
int end = k;
for (; begin < end;)
{
int mid = (begin + end) / 2;
if (arr[mid] == n) return mid;
if (arr[mid] > n)
{
// in left part
begin = begin; // for debug
end = mid;
}
else
{
// in right part
begin = mid + 1;
end = end; // for debug
}
}
return -1;
}
}
Geeks for Geeks 问题陈述和示例:
给定一个大小为 N 的排序数组和一个整数 K,使用二分搜索找到 K 在数组中出现的位置。
示例 1:
输入:N = 5 arr[] = {1 2 3 4 5} K = 4
输出:3
解释:4 出现在索引 3 处。