Я знаю, что есть тонна примеров бинарного поиска, но у меня возникают трудности с тем, чтобы заставить любой работать, когда у меня есть отсортированный массив нумерованных строк, например.
const sortedStringNumbers = ["2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"];
Когда я подключаю его в функцию бинарного поиска, например:
function bsearch (Arr,value){
var low = 0 , high = Arr.length -1 ,mid ;
while (low <= high){
mid = Math.floor((low+high)/2);
if(Arr[mid]==value) return true;
else if (Arr[mid]<value) low = mid+1;
else high = mid-1;
}
return -1 ;
}
Когда я запускаю:
bsearch(sortedStringNumbers, '3')
, возвращается -1
Когда я запускаю :
bsearch(sortedStringNumbers, '26)
возвращает true;
Наконец, причина, по которой я просто не конвертирую входной массив двоичного поиска, заключается в том, что мне нужно использовать эту функцию для двух виды отсортированных массивов, вышеупомянутый вид и другие, содержащие слова, такие как: const sortedWordsArray = ['Algebra', 'Biology', 'Chemistry', ...]
Бинарный массив поиска работает для массивов слов, кстати.