【发布时间】:2021-09-21 16:16:25
【问题描述】:
我正在尝试调试我为运行二进制搜索而编写的一堆代码。出于某种原因,它以无限的while循环结束,我无法弄清楚为什么。有人可以帮我解决这个问题。
public class BinarySearch {
public static int doBinarySearch(int[] arr, int target){
int start = 0;
int end = arr.length - 1;
int mid = start + (end - start)/2;
while(start <= end){
if(target == arr[mid])
{
return mid;
}
else if(target < arr[mid])
{
end = mid - 1;
}
else if(target > arr[mid])
{
start = mid + 1;
}
}
return -1;
}
public static void main(String[] args){
int[] array = {2,3,4,5,6,7,8,9};
int target = 3;
int answer = doBinarySearch(array, target);
System.out.println(answer);
}
}
【问题讨论】:
-
循环播放时您永远不会更新
mid。 -
另外,您最好使用 ide 调试模式通过跟踪执行过程来跟踪此类错误
标签: java binary-search