請問我能得到一些幫助嗎?我已經嘗試了很多方法來獲得這個工作,我得到了數組排序和打印,但之後,我的二進制搜索功能並不想運行,並給我正確的結果。它總是給我-1。任何幫助?Java BinarySearch
public class BinarySearch {
public static final int NOT_FOUND = -1;
public static int binarySearch(double[] a, double key) {
int low = 0;
int high = a.length -1;
int mid;
while (low<=high) {
mid = (low+high) /2;
if (mid > key)
high = mid -1;
else if (mid < key)
low = mid +1;
else
return mid;
}
return NOT_FOUND;
}
public static void main(String[] args) {
double key = 10.5, index;
double a[] ={10,5,4,10.5,30.5};
int i;
int l = a.length;
int j;
System.out.println("The array currently looks like");
for (i=0; i<a.length; i++)
System.out.println(a[i]);
System.out.println("The array after sorting looks like");
for (j=1; j < l; j++) {
for (i=0; i < l-j; i++) {
if (a[i] > a[i+1]) {
double temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
}
for (i=0;i < l;i++) {
System.out.println(a[i]);
}
System.out.println("Found " + key + " at " + binarySearch(double a[], key));
}
}
我會在調試器通過代碼,看看爲什麼它不表現的方式應該。順便說一句。你不可能自己找到的錯誤是mid = mid =(low + high)>>> 1;'我還會將它與JDK中的Arrays.binarySearch的代碼進行比較,因爲它的工作原理是差不多一樣。 ;) –