python二分法

  1. 初始化左边界left为数组第一个元素的下标,右边界right为数组最后一个元素的下标
  2. 计算中间元素的下标 mid = (left + right) // 2
  3. 比较目标值与中间元素的大小关系:
    如果目标值等于中间元素,则找到目标值,返回其下标
    如果目标值小于中间元素,则目标值可能在左半部分,将right = mid - 1
    如果目标值大于中间元素,则目标值可能在右半部分,将left = mid + 1
  4. 重复步骤2和步骤3,直到找到目标值或左边界大于右边界,表示目标值不存在
def binary_search(arr, target):
    left = 0
    right = len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
target = 7
result = binary_search(arr, target)
if result != -1:
    print("目标值在数组中的下表为", result)
else:
    print("目标值不存在")

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需要知道的一些小技巧 以搜索区间为[0, len -1]为例子左中位数下标数: (0 + len - 1) >>>...
    Junjiewawa阅读 1,363评论 0 0
  • 前言 二分查找算法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,具有很大的应用...
    桑榆非晚95阅读 880评论 0 0
  • 有序矩阵中第K小的元素 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意...
    我是小曼巴阅读 1,730评论 0 1
  • 今天做的三道题都是与二分法相关。二分法主要适用于数组已排序的情况,通过减少遍历的情况,提高计算效率。二分法通用处理...
    浮云吹作雪阅读 678评论 0 1
  • 二分法的左右边界 二分法用起来还是挺好用的,就是每次我总是纠结边界条件到底如何确定,用小于号还是小于等于号,满足条...
    伯约同学阅读 495评论 0 0