首页 > 其他分享 >二分查找

二分查找

时间:2023-07-18 12:14:39浏览次数:26  
标签:二分 arr bound while 查找 指针

二分查找

本文的内容总结于该视频

用二分查找来解决这四个问题时,边界条件很容易出错

让我们从另一个角度来看这个问题:

有红蓝两个指针,如何让这两个指针移动到各自的边界

伪代码:

对于上面的四种情况,我们只要控制IsBlue和要返回红色指针还是蓝色指针就可以做到

以下是我用python实现的代码:

lower_bound:

def lower_bound(arr: list, n) -> int:
    l, r = -1, len(arr)
    while l + 1 != r:
        m = (l + r) // 2
        if arr[m] < n:
            l = m
        else:
            r = m
    return r

upper_bound:

def upper_bound(arr: list, n) -> int:
    l, r = -1, len(arr)
    while l + 1 != r:
        m = (l + r) // 2
        if arr[m] <= n:
            l = m
        else:
            r = m
    return 

思考

通过二分查找的方式计算\(\sqrt2\),要求误差小于\(10^{-6}\)

# 显然 2 ** 0.5 小于2,大于0
l, r = 0, 2
while l + 10e-6 < r:
    m = (l + r) / 2
    if m ** 2 < 2:
        l = m
    else:
        r = m
print(r)
# 输出1.414215087890625

算法

标签:二分,arr,bound,while,查找,指针
From: https://www.cnblogs.com/mengzhuo/p/17562553.html

相关文章

  • Selenium查找元素、元素的属性和方法
    查找元素官方文档:https://www.selenium.dev/documentation/webdriver/elements/locators/一般通过find_element或者find_elements方法获取元素后的类型是WebElement或该类型的列表。语法:#查找第一个符合条件的WebElement元素并返回。driver.find_element(By类型,"查找的语......
  • LOJ #6160. 「美团 CodeM 初赛 Round A」二分图染色 思考--zhengjun
    link思维+容斥计数。首先的转化比较妙,二分图转化为\(n\timesn\)的网格图染色。与网络流的转化方向相反,值得注意。然后发现两种颜色(红、蓝)如果独立染色,同一个格子可能会重复染色。考虑容斥,式子很好列,直接容斥即可。\[ans=\sum\limits_{i=0}^n(-1)^n\times\binom{n}{i......
  • 进一步探讨二分
    二分看似简单,但需注意细枝末节接下来简单探讨几种查询以严格大于x的第一位数为例子//序列为m,x为查询的数intfind(intx){//假设序列长为n; intl=1,r=n; while(l<=r){ intmid=(l+r)>>1; if(m[mid]<=x)l=mid+1; elser=mid-1; }//最后出现一定会出现l==r,此时......
  • 整体二分 学习笔记
    对多个答案同时二分。每次将答案在\([l,r)\)中的询问按答案与\(\text{mid}\)的关系丢进两个\([l,\text{mid})\)和\([\text{mid},r)\)的std::vector里,递归求解即可。递归终止的条件:可能的答案区间长度为\(1\),此时答案唯一确定。例题:带修区间\(k\)小将修改和询......
  • LeetCode 658. Find K Closest Elements 二分+双指针
    Givenasortedintegerarrayarr,twointegerskandx,returnthekclosestintegerstoxinthearray.Theresultshouldalsobesortedinascendingorder.Anintegeraisclosertoxthananintegerbif:|a-x|<|b-x|,or|a-x|==|b-x|an......
  • 二分查找法 的代码实现(JS版)
    递归版本:constBinarySearch=(function(){/***内部二分查找算法*@param{number[]}nums-有序数组*@param{number}l-左端点*@param{number}r-右端点*@param{number}target-目标数值*/constsearch=funct......
  • python,质谱数据,加噪声后用小波神经网络,二分类预测
    #库的导入importnumpyasnpimportpandasaspdimportmath#激活函数deftanh(x):return(np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))#激活函数偏导数defde_tanh(x):return(1-x**2)#小波基函数defwavelet(x):return(math.cos(1.75*x))*(np.......
  • WQS二分/带权二分/凸包优化
    WQS二分/带权二分/凸包优化应用范围限制个数:给定一些物品和选物品的限制条件,要求刚好选\(m\)个,让你最大化(最小化)权值。单调性:选的物品越多,权值越大(越小)。分析1.原理解释:假设限制不固定,当选\(x\)个时,最大权值为\(f(x)\)。算法的核心就是将“选取物品”这一操作赋......
  • 数据结构 查找 红黑树查找
    1.红黑树的定义红黑树可以看作是对平衡二叉树的进一步改进。平衡二叉树的一个缺点在于插入和删除操作中为了维持平衡会消耗很大的执行代价,降低效率。红黑树的结构是在平衡二叉树的平衡标准上稍微放宽得到的。红黑树的定义:......
  • python怎么查找哪个插件是否安装
    在Python中,我们可以使用pkg_resources模块来查找是否安装了特定的插件。pkg_resources是Python标准库setuptools的一部分,它提供了许多有用的功能,包括查找和管理安装的包。下面是一个示例代码,演示了如何使用pkg_resources模块来查找并验证是否安装了特定的插件:importpkg_resource......