美文网首页
设置哨兵,优化查找效率

设置哨兵,优化查找效率

作者: _royalpioneer | 来源:发表于2020-08-19 12:57 被阅读0次

    在对一个数组进行查找某个特定值时,我们往往是需要处理边界值的问题的,例如以下情况:

    查找arr中是否有K这个值,是则返回对应索引,否则返回-1。

    一般的思路是分情况:

    // js实现代码
    const search_for_K = (arr, k) => {
        for(let i=0;i<arr.length;i++) {
            if(arr[i] === k) return i;
            else if(arr.length-1 === i) return -1;
        }
    };
    

    使用哨兵,即在数组边界加入目标值K,以此将对比次数减半:

    // js实现代码
    const search_for_K = (arr,k) => {
        arr.unshift(k);
        for(let i=arr.length-1;i>=0;i--){
            if(arr[i] === k) return i-1;
        } 
    };
    

    因为哨兵的设置让程序减少了一步判断,因此查找的效率会有所提升,在数据量大的情况下,这种提升会十分明显。

    后续如果学习到哨兵的更多应用场景,会继续更新本文的。

    相关文章

      网友评论

          本文标题:设置哨兵,优化查找效率

          本文链接:https://www.haomeiwen.com/subject/aokrjktx.html