/*
二分查找:
前提:数组、有序。逻辑:优先和数组的中间元素比较,如果等于中间元素,则直接返回。如果不等于则取半继续查找。

二分搜索算法的原理和猜数字游戏类似。
 */

function binarySearch(arr, value) {
  let min = 0;
  let max = arr.length - 1;

  while (min <= max) {
    const mid = Math.floor((min + max) / 2);

    if (arr[mid] === value) {
      return mid;
    } else if (arr[mid] > value) {
      max = mid - 1;
    } else {
      min = mid + 1;
    }
  }

  return -1;
}

// 更多资料
// https://blog.csdn.net/phoebe_16/article/details/54613240
// https://www.jianshu.com/p/eef65b21ace0
// https://www.cnblogs.com/YikaJ/p/4387909.html