美文网首页
二分查找(binary search)的四种实现方式

二分查找(binary search)的四种实现方式

作者: 关辰晓 | 来源:发表于2020-05-10 11:08 被阅读0次

    以下为javascript实现二分查找(binary search)的四种实现方式,其中第一种为递归写法,其他三种为迭代写法。

    递归写法(recursive approach)

    const binarySearchRecursive = (nums, left, right, target) {
      if (right <= left) {
        return -1;
      }
      
      const mid = left + Math.floor((right - left) / 2);
      if (nums[mid] > target) {
        return binarySearchRecursive(nums, left, mid - 1, target);
      } else if (nums[mid] < target) {
        return binarySearchRecursive(nums, mid + 1, right, target);
      }
      return mid;
    };
    

    迭代写法1:left <= right

    const binarySearchIterative1 = (nums, target) => {
      let left = 0, right = nums.length - 1;
      while (left <= right) {
        const mid = left + Math.floor((right - left) / 2);
        if (nums[mid] === target) {
          return mid;
        }
        if (nums[mid] > target) {
          right = mid - 1;
        } else {
          left = mid + 1;
        }
      }
      return -1;
    };
    

    迭代写法2: left < right

    const binarySearchIterative2 = (nums, target) => {
      let left = 0, right = nums.length;
      while (left < right) {
        const mid = left + Math.floor((right - left) / 2);
        if (nums[mid] === target) {
          return mid;
        }
        if (nums[mid] > target) {
          right = mid;
        } else {
          left = mid + 1;
        }
      }
      return -1;
    };
    

    相关文章

      网友评论

          本文标题:二分查找(binary search)的四种实现方式

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