前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >力扣704.二分查找

力扣704.二分查找

作者头像
才浅Coding攻略
发布2022-12-12 17:05:37
1360
发布2022-12-12 17:05:37
举报
文章被收录于专栏:才浅coding攻略

二分查找步骤:

  • 如果目标值等于中间元素,则找到目标值。
  • 如果目标值小于中间元素,继续在左侧搜索。
  • 如果目标值大于中间元素,则继续在右侧搜索。
  • 如果最终搜索区间的左右节点重合也未找到,则表明不存在该值返回-1

时间复杂度:O(logN)

非递归方法实现

代码语言:javascript
复制
def search(nums, target):
    start, end = 0, len(nums)-1
    while start < end:
        mid = start + (end - start)//2
        if target == nums[mid]:
            return mid
        if target < nums[mid]:
            end = mid - 1
        else:
            start = mid + 1
    return -1

nums = [-1, 0, 3, 5, 9, 12]
target = 9
print(search(nums, target))
# 输出4

递归方法实现

代码语言:javascript
复制
def search(nums, target):
    def bs(i, j):
        if i > j:
            return -1  # 设置终止条件
        m = (i + j) // 2
        if target == nums[m]:
            return m
        elif target < nums[m]:
            return bs(i, m - 1)
        else:
            return bs(m + 1, j)

    return bs(0, len(nums) - 1)

— END —

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 才浅coding攻略 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档