У меня есть массив, содержащий версии статьи. Я хочу реализовать функцию двоичного поиска, которая возвращает первую версию, содержащую заданную строку. , например, возвратит 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);
}
Двоичный поиск не делает этого, если нет куча вещей, которые вы не говорят нам. – hobbs
http://stackoverflow.com/questions/3183582/what-is-the-fastest-substring-search-algorithm –
Я хочу, чтобы функция Java выполняла поиск заданной строки в редакции статьи википедии. Существующим является http://wikipedia.ramselehof.de/wikiblame.php?user_lang=en&lang=en&project=wikipedia&article=&needle=&skipversions=0&ignorefirst=0&limit=500&offtag=30&offmon=8&offjahr=2014&searchmethod=int&order=desc&user= – Hunsu