бинарный(двоичный) поиск для String
Всем привет, понимаю как написать бинарный поиск по массиву, но не могу понять как этот поиск сделать по String чтобы найти char символ. Код для поиска позиции слова в массиве -
public static int charSearch(String word, char a, int lB, int uB){
if(lB > uB){
return -1;
}
int med = lB + (uB - lB) /2;
int cmp = Character.compare(a, word.charAt(med));
if( cmp < 0){
return charSearch(word,a,lB, med-1);
}
if(cmp > 0){
return charSearch(word,a, med +1, uB);
}
return med;
}
Вызов метода -
public static void main(String args[]) {
char h = 's';
String a = "Toschibaabr";
System.out.println(charSearch(a, h,0,a.length()-1)); //возвращает 2, а должен 3
System.out.println(charSearch("Topchibaasbr", h,0,a.length()-1)); //возвращает -1, а должен 10
System.out.println(charSearch("Ksojan",'a',0,a.length()-1)) //возвращает 4, а должен 5
System.out.println(charSearch("Ksojan",'n',0,a.length()-1)) ////возвращает -1, а должен 6
}
Ответы (1 шт):
Автор решения: Barmaley Red Star
→ Ссылка
Бинарный поиск (он же дихотомический поиск) имеет смысл только для поиска в сортированном массиве. Вы пытаетесь искать в String, который по сути представляет собой несортированный массив char - неудивительно, что у вас ничего не получается.
В общем учите матчасть