60.二分查找

作者: wo不是黄蓉 | 来源:发表于2022-02-21 21:03 被阅读0次

day12: 704. 二分查找(简单)
思想和我之前写的有序数组中的单一元素很像可以参考。
二分二分:

  • 先划分目标元素的左右两边
  • 根据条件判断是否到达指定位置
  • 不到指定位置就改变左右两边指针进行移动,趋于目标元素。
var search = function (nums, target) {
  if (!nums.includes(target)) return -1;
  let left = 0,
    right = nums.length - 1;

  while (left < right) {
    let mid = (left + right) >>> 1;
    //target-nums[mid] > 0取值区间在[mid,right],<0取值区间在[mid-left之间]
    if (target - nums[mid] > 0) {
      left = mid + 1;
    }
    if (target - nums[mid] < 0) {
      right = mid - 1;
    }
    if (target - nums[mid] === 0) {
      return mid;
    }
  }
  return right;
};

console.log(search([-1, 0, 3, 5, 9, 12], 2));

相关文章

网友评论

    本文标题:60.二分查找

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