二分查找函数汇总

本文探讨了如何通过二分查找策略解决猜数字游戏,揭示了使用二分查找能将平均尝试次数降低至10次。接着介绍了二分查找函数的实现,包括`BinarySearch`函数,它在已排序数组中查找元素并返回下标,以及`LowerBound`函数,用于寻找比给定值小的下标最大的元素。文章强调了在实现中防止整数溢出的细节处理。
摘要由CSDN通过智能技术生成

问题:A心里想一个1-1000之间的数,B来猜,可以问问题,A只能回答是或否。怎么猜才能问的问题次数最少?

思路:是1吗?是2吗?…是999吗? 平均要问500次 大于500吗?大于750吗?大于625吗? …每次缩小猜测范围到上次的一半
只需要 10次

二分查找函数

写一个函数BinarySeach,在包含size个元素的、从小到大排序的int数组a里查找元素p,如果找到,则返回元素下标,如果找不到,则返回-1。要求复杂度O(log(n))

下面附核心代码:

    int BinarySearch(int a[],int size,int p)
    {
   
    int L = 0; //查找区间的左端点
    int R = size - 1; <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值