二分查找算法,是常见的搜索算法之一,适用于有序的序列,通过将序列不断的对折分为区间,从而确定查找值是否存在,优点是速度快。

首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

使用python递归实现其算法:

def binary_search(items: list, item: str) -> float:

if not len(items):return Falseif item > items[-1]:return Falseelif item < items[0]:return Falsen = len(items) // 2if items[n] == item:return Trueelse:if items[n] < item:return binary_search(items[n:], item)else:return binary_search(items[:n], item)

二分查找是应用在数据量较大的场景中,如一些图片的RGB数组操作中,典型的是在滑块验证中使用二分法来确定最佳距离。

   def match(self, target, template):img_rgb = cv2.imread(target)img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)template = cv2.imread(template,0)run = 1w, h = template.shape[::-1]print(w, h)res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) 

# 使用二分法查找阈值的精确值 L = 0R = 1while run < 20:run += 1threshold = (R + L) / 2print(threshold)if threshold < 0:print('Error')return Noneloc = np.where( res >= threshold)print(len(loc[1]))if len(loc[1]) > 1:L += (R - L) / 2elif len(loc[1]) == 1:print('目标区域起点x坐标为:%d' % loc[1][0])breakelif len(loc[1]) < 1:R -= (R - L) / 2

for pt in zip(*loc[::-1]):cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7, 279, 151), 2)cv2.imshow('Dectected', img_rgb)cv2.waitKey(0)cv2.destroyAllWindows()return loc[1][0]

python实现二分查找算法相关推荐

  1. python二分查找算法_如何使用python的二分查找算法

    如何使用python的二分查找算法 发布时间:2020-11-18 09:27:29

  2. python函数教程:Python递归函数 二分查找算法实现解析

    这篇文章主要介绍了Python递归函数 二分查找算法实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.初始递归 递归函数:在一个函数里在调 ...

  3. Python实现二分查找算法,图片结合代码讲解,简单易懂

    Python实现二分查找算法,图片结合代码讲解,简单易懂 二分查找是指在一个数组中循环找到特定的目标元素的一种算法,二分查找算法要求这个数组必须是有序的,如果不是有序则最后得出的结果是不准确的,因为其 ...

  4. android二分查找法简书,【PYTHON】二分查找算法

    二分查找: 在一段数字内,找到中间值,判断要找的值和中间值大小的比较. 如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找. 如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找. 直到 ...

  5. python实现二分查找算法_两种方法实现Python二分查找算法

    一. arr=[1,3,6,9,10,20,30] def findnumber(l,h,number): mid=(l+h)//2 if arr[mid]==number: print(" ...

  6. python实现二分查找算法_python实现二分查找算法

    ??二分算法的定义不在多说了,百度一下就知道(支持国产 ) import syssource = [1,2,3,4,5,6,7,8,9,10] #must be in orderdes = int(s ...

  7. python实现二分查找(折半查找)算法

    python实现二分查找算法 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 查找又称折半 ...

  8. Python 二分查找算法

    如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76 ...

  9. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  10. python 二分查找_二分查找算法总结

    二分查找的思想是通过每次折半快速找到一个数,例如,我们经常玩的游戏猜数字,在0~1000,随便出一个数字98让对方猜,首先猜500,对方给提示比500大还是小,如果数字小于500,就继续猜250,依次 ...

最新文章

  1. BZOJ——1202: [HNOI2005]狡猾的商人
  2. 洛谷 1969 积木大赛——水题
  3. Spring集成redis(Spring Data Redis)
  4. python基础代码技巧_写Python必须知道的这几个代码技巧!你会吗?
  5. K8S实战之环境部署1.18(一)
  6. 【设计模式】之单例模式
  7. 乐优商城(15)--订单服务
  8. Field.Store ,ANALYZED备忘
  9. 前端知识:使用layui模板搭建页面,简单快捷
  10. Kubernetes-自动扩展器HPA、VPA、CA
  11. (笔试题)风口的猪-中国牛市
  12. The computer is being attacked
  13. java多线程并发基础汇总一
  14. Spring + SpringMVC + Hibernate + Shiro整合
  15. 电脑上如何禁止一切弹窗广告?永久关闭桌面弹出广告
  16. 深度学习辅助决策医疗器械软件审评要点(征求意见稿)
  17. 【Linux】冯诺依曼体系结构、操作系统及进程概念
  18. 学习Java的第五天 | 定义方法 | 引用数据类型——类 | 访问权限-修饰符 | 全局变量与局部变量 | toString | 构造方法 | 方法重载
  19. 微信自主出题,答题小程序开发,微信扫描二维码实现方法,扫二维码出试卷答题的软件!
  20. 计算机丢失mfc110d.dll,msvcp110d.dll

热门文章

  1. Expected value at 1:0 异常解决方法
  2. 团队项目:第二次冲刺站立会议08
  3. 大道至简——第二章读后感
  4. 《授予博士、硕士学位和培养研究生的学科、专业目录》 (1997 颁布 )
  5. 让IIS支持中文文件名和目录
  6. mvc2 在 .net 4.0 下的ValidateInput(false) 无效
  7. Linq,企业类库,EXECL生成,Execl chart的一些基本操作记录.(一)
  8. PhotoShop 2022 mac版新增功能
  9. Android自定义控件之TextView的展开与折叠
  10. 关于scala中lazy val的几个注意事项