function binarySearch(items, target){
var startIndex = 0,
stopIndex = items.length-1,
middle = Math.floor((stopIndex+startIndex)/2);
debugger;
while(items[middle]!=target && startIndex<stopIndex){
    if(target<items[middle]){
        stopIndex = middle-1;
    } else if(target>items[middle]){
        startIndex = middle+1;
    }
    middle = Math.floor((stopIndex+startIndex)/2);
}}


我写了另一个要在上面的binarySearch()函数使用的函数是

function getValue(){
var items = ["a","b","c","d","e","f","g","h","i","j"];
alert(binarySearch(items,"i"));}


我这样从HTML调用此getValue()

<button onclick="getValue()">Click to find the binary</button>


当我单击按钮时,它会警告“未定义”。

实际上,我正在学习,所以我无法正确理解如何传递值,如何调用函数以获取期望值。
如果有人帮助我理解和解决此问题,将不胜感激。

最佳答案

您没有从函数中返回任何东西。循环运行完成后,您需要返回找到的内容。

function binarySearch(items, target){
    var startIndex = 0,
    stopIndex = items.length-1,
    middle = Math.floor((stopIndex+startIndex)/2);
    debugger;
    while(items[middle]!=target && startIndex<stopIndex){
        if(target<items[middle]){
            stopIndex = middle-1;
        } else if(target>items[middle]){
            startIndex = middle+1;
        }
        middle = Math.floor((stopIndex+startIndex)/2);
    }
    return (items[middle] !== target) ? -1 : middle;
}


返回行使用ternary运算符,它等同于if语句。

关于javascript - JavaScript BinarySearch的未定义结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46649093/

10-09 17:51