1
Я кодирую свою собственную функцию для бинарного алгоритма поиска, и я не могу найти расхождения в логике. Когда я ищу 4, он не возвращает идеальный ответ.Двоичный код поиска
код ниже:
var list = [1,2,3,4,6,7,13,18,19];
function binarySearch(list,number) {
var newList = list;
while (newList.length >= 1) {
var halfNum = Math.round(newList.length/2);
if (newList[halfNum] === number) {
return "Number Found";
} else if (newList[halfNum] < number) {
newList = newList.slice(halfNum + 1,newList.length - 1);
} else {
newList = newList.slice(0,halfNum - 1);
}
}
}
console.log(binarySearch(list,4));
В качестве общей методики отладки вставьте 'console.log' вызовы в ключевые части кода для отображения вычисленных значений. Это покажет, где все пошло не так. – Matt
@Matt Спасибо, и я пробовал, что не могу понять, где ошибка в коде. –
Хорошее начало было бы смотреть на * newList * после * slice *. – RobG