我有一个包含文章版本的数组。我想实现一个二进制搜索函数,它返回包含给定字符串的第一个版本。 例如,将为下一个数组返回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);
}
答案 0 :(得分:-1)
假设这是排序数据,所以二进制搜索是合适的:
1)二进制搜索您正在寻找的值的实例。
2)然后迭代回到开始以确定这是第一个实例,还是找到第一个实例,如果它不是。
(换句话说,就像你手动解决它一样。)