gpt4 book ai didi

java - 当我尝试在 java 中运行下面的二分搜索代码时,它会抛出 ArrayOutOfExcepetion。任何人都可以看一下并告诉我哪里出了问题吗?

转载 作者:行者123 更新时间:2023-12-01 18:08:45 24 4
gpt4 key购买 nike

当我尝试搜索超出给定输入数组范围的元素时,它会抛出错误ArrayIndexOutOfBound

下面是代码片段:

import java.util.*;

public class Binary {
int binSearch(int arr[], int target)
{
int low=0;
int high= arr.length;
while(low<=high)
{
int mid = (low+high)/2;
if(arr[mid] == target)
return mid;
if(target>arr[mid])
low=mid+1;
else
high=mid-1;
}
return -1;
}

public static void main(String arg[])
{
Binary b= new Binary();
int arr[]= {2, 4, 5, 7, 23, 31, 34, 43, 45};
int ans=b.binSearch(arr, 46);
if(ans==-1)
System.out.println("The element is not found");
else
System.out.println("Element is found at postion = " + (ans+1));
}
}

最佳答案

数组长度是数组中元素的总数,但由于索引从 0 开始,因此您可以从数组访问的最后一个值始终是 length - 1,在上面的代码中,你正在运行从 0 到数组长度的循环,我认为这是这里的问题。

所以尝试类似的事情

int binSearch(int arr[], int target)
{
int low=0;
int high= arr.length -1; //Correct condition

while(low<=high) //Correct condition
{
int mid = (low+high)/2;

if(arr[mid] == target)
return mid;

if(target>arr[mid])
low=mid+1;

else{
high=mid-1;
}

}

return -1;
}

希望对你有帮助

关于java - 当我尝试在 java 中运行下面的二分搜索代码时,它会抛出 ArrayOutOfExcepetion。任何人都可以看一下并告诉我哪里出了问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com