Бинарный поиск по массиву

Подскажите как исправить? Нужно найти дистанцию между словами 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();
        }

Ответы (0 шт):