二进制搜索函数返回数组中字符串的首次出现

时间:2014-08-30 21:16:05

标签: java binary-search

我有一个包含文章版本的数组。我想实现一个二进制搜索函数,它返回包含给定字符串的第一个版本。 例如,将为下一个数组返回4:

 array[0] = my name is foo and I'm a programmer.
 array[1] = my name is bar and I'm a programmer.
 array[2] = my name is foo and I'm a programmer.
 array[3] = my name is and I'm a programmer.
 array[4] = my name is foo and I'm a programmer.
 array[5] = my name is foo.

这是我到目前为止所做的:

private static Revision binarySearch(Revision[] array, int left, int right,
    String value) throws IOException {

    if (left > right)

       //I don't know what to put here;

    int middle = (left + right) / 2;
    Revision rv = array[middle];
    String text = rv.getText();
    if (!containsTemplate(text, value))
        return binarySearch(array, left, middle - 1, template);
    else
        return binarySearch(array, middle + 1, right, template);

    }

1 个答案:

答案 0 :(得分:-1)

假设这是排序数据,所以二进制搜索是合适的:

1)二进制搜索您正在寻找的值的实例。

2)然后迭代回到开始以确定这是第一个实例,还是找到第一个实例,如果它不是。

(换句话说,就像你手动解决它一样。)