【发布时间】:2016-03-19 12:32:36
【问题描述】:
我正在学习 Java 编程并制作了一个程序,该程序使用 Binary Search 在 char 数组中查找 symbol。但是,当我尝试在 array 中搜索 not 的 symbol 时遇到问题,我的程序变成了无限循环。如果数组中没有这样的符号,我不知道如何制作错误符号。这是我的程序的代码
import java.lang.reflect.Array;
import java.util.Arrays;
public class Main {
public static void main(String[] args){
char[]arr = {'a','d','f','l','o','z'};
find(arr,'m');
}
public static void find(char[]arr,char ch){
int last = arr.length-1;
int mid=last;
while (arr[mid] != ch){
if (arr[mid]<ch){
mid = (last+mid)/2;
}
else{
last=mid;
mid=last/2;
}
}
System.out.print(mid);
}
}
提前谢谢你。
【问题讨论】:
-
逐步调试调试器以查找未更改的内容。注意:如果
mid == last/2这不会改变任何东西。 -
您隐含地假设您的搜索下限的索引始终为 0。请查看任何好的教科书或互联网上对“二分搜索”的描述。
-
@PeterLawrey 似乎
last=mid在mid=last/2之前避免了“不会改变任何东西”。但没有first毁了表演。
标签: java arrays sorting search