我在java中的数组中实现了二进制搜索的代码 这是我的代码:
public class Exam {
public static boolean find(int[]a, int k){
int mid = a.length/2;
if (a[mid]==k) {
return true;
}
else if (a[mid] < k) {
for (int i=0; i<a[mid]; i++) {
if (a[i]==k) {
return true;
}
}
} else {
for (int ii=mid; ii<a[a.length]; ii++) {
if (a[ii]==k) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
int[] a = { 2, 3, 4, 9, 11, 15 };
System.out.println(find(a,3));
}
}
当我运行它时,我收到错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
at shapes.Exam.find(Exam.java:20)
at shapes.Exam.main(Exam.java:34)
但是当我改为运行此行时:
System.out.println(find(a,15));
我得到正确的输出如下:
true
我的代码出了什么问题?
答案 0 :(得分:-1)
下面:
for (int ii=mid; ii<a[a.length]; ii++) {
对于数组的最后一个元素,它应该是a[a.length-1]