如何调试这个用于二分搜索的Javascript代码

问题描述 投票:0回答:1

这段代码是实现二分查找。但是,它不起作用并返回未定义。我不知道为什么会出错,请帮助我!

function binarySearch(arr, key) {
  let low = 0;
  let high = arr.length - 1;
  let mid
  while (low <= high) {
    mid = Math.floor((high + low) / 2);
    if (arr[mid] == key) {
      return mid;
    } else if (arr[mid] < key) {
      high = mid - 1;
    } else if (arr[mid] > key) {
      low = mid + 1;
    }
  }
  // return -1
}
console.log(binarySearch([2, 3, 4, 10, 40], 10));

javascript algorithm variables search binary
1个回答
0
投票

我看到了这个错误,但我会给你一个机会先找到它。

更新代码以添加额外的 console.log 语句:

while (low <= high) {
    mid = Math.floor((high + low) / 2);

    // ADD THIS LINE
    console.log("low=", low, "high=", high, "mid=", mid, "arr[mid]=", arr[mid]);

    if (arr[mid] == key) {
      return mid;
    } else if (arr[mid] < key) {
      high = mid - 1;
    } else if (arr[mid] > key) {
      low = mid + 1;
    }
  }

您很快就会自己找到错误。

© www.soinside.com 2019 - 2024. All rights reserved.