javascript - 二进制搜索代码

标签 javascript binary-search

我正在为二进制搜索算法编写自己的函数,但我似乎无法找到逻辑上的差异。每当我搜索 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));

最佳答案

这里的问题是你做错了范围。 javascript slice 函数将数组切入区间 [start,finish),我的意思是它不包括新数组中的结束索引

所以你应该改变这个:

    } else if (newList[halfNum] < number) {
        newList = newList.slice(halfNum + 1,newList.length - 1);
    } else {
        newList = newList.slice(0,halfNum - 1);
    }

对此:

    } else if (newList[halfNum] < number) {
        newList = newList.slice(halfNum + 1,newList.length);
    } else {
        newList = newList.slice(0,halfNum);
    }

关于javascript - 二进制搜索代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922906/

相关文章:

javascript - React App CSS 转换非常慢

java - 二分查找算法的正确方法

c++ - std::binary_search 的自定义比较函数

java - 编写通用的二分查找方法

c++ - 对排序 vector 进行二分查找

java - 二进制搜索不起作用 - 非数组。

javascript - 通过在 div 中使用 html 注释来显示/隐藏文本

javascript - 如何使用 Javascript 在 CSS 中设置多种样式(由于 vendor 前缀)?

javascript - sails.js 中的主干

javascript - React Native Camera - 多张照片