C语言学习日志23.11.12

在面对一堆数据中查找某一数据,我们可以用逐一枚举的方式来进行搜索.但是这样时间复杂度会很大,会浪费很多内存.因此,在这周,我学习到了二分查找和二分答案来进行搜索.这样就可以降低时间复杂度了.

首先是二分查找,通常情况下,二分查找只需要控制好边界条件就可以了.

思路通常为设置一个起点和一个终点,取这个区间的中间值与目标值进行比较,如果中间值大于目标值,那就舍弃右区间,如果中间值小于目标值.那就舍弃左区间.如此循环就能找到目标值了.

模板分为以下两类.

模板一

模板二

这就是在二分查找中两个基本的模板了.

第一个模板是从左开始寻找目标.第二个模板是从右开始寻找目标.

当然,二分查找也能寻用在实数范围内进行,实数范围就不用考虑那么多边界问题了

模板三

浮点二分相对于上面的两种模板,不用考虑边界问题,因为浮点数不会取整,所以不用考虑.

在我们做题的时候,如果题目明确要求找最小值的话,我们就用第一个模板,如果是寻找最大值,我们就用第二个模板.

接下来就是二分答案了,那么二分答案和二分查找有什么区别呢.

二分查找:在一个有序区间上进行左右划分的查找.

二分答案:答案有一个区间,在这个区间内进行二分,直到找到最优解.

典型的二分答案特征就是求什么的最大值的最小,求什么最小值的最大.

1.求什么最大值的最小,即在我们使用二分答案的时候,当二分最大值的时候,我们尽量让答案往前靠既让r=mid,这里我们用到的模板就是模板一.

2.求什么最小值的最大,即在我们使用二分答案的时候,当二分最小值的时候,我们尽量让答案往后靠,既让l=mid,这里我们用到的模板就是模板二.

以上,就是我对于二分查找和二分答案的学习.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值