Бинарный поиск по массиву
Подскажите как исправить? Нужно найти дистанцию между словами word1 и word2 с помощью бинарного поиска, но загвостка в том, что eсли if(word1.equals(word2)) == true, то в методе rasniza, в f1 и f2 записываются одинаковые индексы массива и разница получается равна 0, хотя так быть не должно..
Должно быть так:
String[] arr = {"aaa","bbb","bbb","bbb","ccc","ddd"};
System.out.println(rasniza("bbb","bbb",arr));
Получается вывод 0, а должен быть 2!(Ведь 3 минус 1 = 2)!
public static int rasniza(String word1, String word2, WordsWIndex arr[]){
int f1 = binarySFS(word1, arr, 0, arr.length-1);
int f2 = binarySFS(word2, arr, 0, arr.length-1);
return f2 - f1;
}
public static int binarySFS(String el, String arr[], int lowerBound, int upperBound){
if(lowerBound > upperBound){
return -1;
}
int med = lowerBound + (upperBound - lowerBound) /2;
int cmp = el.compareTo(arr[med].getName());
if( cmp < 0){
return binarySFS(el,arr,lowerBound, med-1);
}
if(cmp > 0){
return binarySFS(el,arr, med +1, upperBound);
}
return arr[med].getIndex();
}