美文网首页
JS 二分查找法实现

JS 二分查找法实现

作者: ER_PM | 来源:发表于2019-06-25 16:39 被阅读0次

    二分查找法是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null。

    一般而言,对于包含n个元素的列表,用二分查找最多需要㏒₂n步。

    /**
     * @param {list}有序的数组列表
     * @param  {item}指定要查找的元素
     * @return {number|null}
     */
    binary_search (list, item) {
          //low 和 high 用于跟踪要在其中查找的列表部分
          let low = 0;
          let high = list.length - 1;
    
          while (low <= high) { //只要范围没有缩小到只包含一个元素,
            let mid = Math.floor((low + high) / 2);//就检查中间的元素,
            let guess = list[mid];
            if (guess == item) { //找到了元素
              return mid;
            }
            if (guess > item) { //猜的数字大了
              high = mid - 1;
            } else { //猜的数字小了
              low = mid + 1
            }
          }
          return null; //没有指定元素
        }
    let my_list = [1,3,5,7,9];
    console.log(binary_search(my_list,3)); //打印 1
    console.log(binary_search(my_list,-1))://打印null
    

    相关文章

      网友评论

          本文标题:JS 二分查找法实现

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