【发布时间】:2013-12-19 18:35:00
【问题描述】:
这个程序可以很好地处理整数,但不能处理双精度数。没有错误,但程序返回 -1。对不起,如果这是一个愚蠢的问题,但我是编程新手。
public class binarySearchProject
{
public static int binarySearch(double[] arr, double x, int high, int low)
{
int mid=(high+low)/2;
if(high==low || low==mid || high==mid)
{
return -1;
}
if(arr[mid]>x)
{
return binarySearch(arr, x, high, mid);
}
else if(arr[mid]<x)
{
return binarySearch(arr, x, mid, low);
}
else if(arr[mid]==x)
{
return mid;
}
return -1;
}
public static void main(String args[])
{
double i = 45.3;
double[] a = {-3, 10, 5, 24, 45.3, 10.5};
int size = a.length;
System.out.println(binarySearch(a, i, size, 0));
}
}
【问题讨论】:
-
它也不适用于
ints。我试过了。 -
不知道是不是这个问题,但是不应该对数组进行排序以使二进制搜索起作用吗?
-
我认为你也交换了你的案例:如果 mid > x 那么你应该在下半部分搜索,而不是在上半部分。
-
是为了锻炼目的吗?如果不是,请不要重新发明轮子并使用
Arrays.binarySearch(double[] a, double key)。