虽然循环不会在迭代二进制搜索中结束

时间:2015-07-07 15:09:09

标签: java algorithm binary-search

我目前正在编写一个二进制搜索,它使用迭代而不是递归,并且不会返回任何内容。我把它调试到while循环没有结束,但我似乎无法弄清楚我哪里出错了。

以下是代码:

public static <E extends Comparable> boolean binarySearchIterative(E[] array, E obj) {
    int first = 0;
    int last = array.length - 1;
    while(first <= last) {
        int middle = (first + last) / 2;
        if(array[middle].equals(obj)) return true;
        else if(obj.compareTo(array[middle]) < 0) first = middle - 1;
        else first = middle + 1;
    }
    return false;
}

是的,我的名单是有序的;)

1 个答案:

答案 0 :(得分:3)

在第二个else if部分中,您需要设置last而不是first -

else if(obj.compareTo(array[middle]) < 0) last = middle - 1;