二进制搜索家庭作业

时间:2011-03-11 10:12:06

标签: java binary-search

已经很晚了,我累了,忘记了我有java作业。最后一个问题是编写一个Java程序,使用二进制搜索方法从此列表{-3,10,5,24,45.3,10.5}中找到值45.3。

通常情况下,我会没事,但我真的不想在早上急于这样做,我太累了,不能直接思考,所以希望有人能帮助至少一点点。

以下是代码:

public class questionTwelve
{
    public static int binarySearch(int x)
    {
        int low = 0;
        int high = a.length - 1;
        int mid;
        int foundindex;

        while (low <= high)
        {
            mid = (low + high) / 2;
            if (a[mid].compareTo (x) < 0)
                low = mid + 1;
            else if (a[mid].compareTo (x) > 0)
                high = mid - 1;
            else
                foundindex = mid.getIndex;
        }
    }

    public static void main(String[] args)
    {
        int a[];
        a[0] = -3;
        a[1] = 5;
        a[2] = 10;
        a[3] = 10.5;
        a[4] = 24;
        a[5] = 45.3;

        System.out.println("Value 45.3 found at index " + binarySearch(45.3));
    }
}

1 个答案:

答案 0 :(得分:2)

您尝试将10.5和45.3(不是整数)存储在整数列表中。这是一个问题。然后,您尝试将45.3(仍然不是整数)传递给接受整数作为参数的方法。

在该方法中,您尝试在整数值上使用compareTo,只需使用标准&lt;和&gt;运算符。

然后你尝试使用mid.getIndex - 不确定getIndex是什么,但它不是我用过的任何东西。你的方法也没有返回任何东西。你需要在return mida[mid] == x,然后在while循环后return -1(表示该号码不在列表中),如果它从未点击其他返回语句