Java 这种二进制搜索有什么问题?索引自动边界
我试图编写二进制搜索算法,但产生以下错误:Java 这种二进制搜索有什么问题?索引自动边界,java,arrays,algorithm,binary-search,arrayindexoutofboundsexception,Java,Arrays,Algorithm,Binary Search,Arrayindexoutofboundsexception,我试图编写二进制搜索算法,但产生以下错误: 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) 到目前为止我写
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;
}
}
类解决方案{
int二进制搜索(int arr[],int n,int k){
if(arr==null)返回-1;
int begin=0;
int-end=k;
对于(;开始<结束;)
{
int mid=(开始+结束)/2;
如果(arr[mid]==n)返回mid;
如果(arr[mid]>n)
{
//在左边
begin=begin;//用于调试
结束=中间;
}
其他的
{
//正确的部分
开始=中间+1;
end=end;//用于调试
}
}
返回-1;
}
}
极客 对于 极客问题陈述和示例:
给定大小为N和整数K的排序数组,在
使用二进制搜索,数组中存在哪个K
示例1:
输入:N=5 arr[]={1 2 3 4 5}K=4输出:3
说明:4出现在索引3处
替换
int-end=k代码>至int-end=n-1代码>
k
是你必须找到的数字,n
是数组大小为什么不用n代替n-1?因为它是0基的所以什么?如果数组大小是3,那么索引是0,1,2(3-1=2),所以没问题??