博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法 (二分查找算法)
阅读量:6473 次
发布时间:2019-06-23

本文共 1082 字,大约阅读时间需要 3 分钟。

二分查找

 从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半

 
二分查找:
在一段数字内,找到中间值,判断要找的值和中间值大小的比较。
如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找。
如果中间值小一些,则在中间值的右侧区域继续按照上述方式查 找。
直到找到我们希望的数字。
 
l = [1,3,4,5,6,7,44,55,77,88,99]def func(line,num):    low=0#获取最小下标    high=len(line)-1#获取最大下标    while low <= high: #只有 最小下标小于最大下标才能证明有数据        mid=(low+high)//2 #获取中间下标,实现二分        if line[mid] == num: #如果这个中间数等于你想查找的值            return mid #返回该下标        elif  line[mid] > num:#如果该数值大于你想寻找的值            high=mid-1#将中间下标的左移一位作为最大下标的值,实现搜索范围减半        else:            low=mid+1 #同理 最小下标右移    return "error"print(func(l,1))#输出0

 

递归函数方式

l = [1,3,4,5,6,7,44,55,77,88,99]def find(l,aim,start=0,end=None):    end=len(l) if end is None else end    mid_index=(end-start)//2 + start    if start <= end:        if l[mid_index] < aim:            return find(l,aim,start=mid_index+1,end=end)        elif l[mid_index] > aim:            return find(l,aim,start=start,end=mid_index-1)        else:            return [mid_index]    else:        return 'error'print(find(l,5))#输出[3]

 

转载于:https://www.cnblogs.com/mjiu/p/8906303.html

你可能感兴趣的文章
成都【猎人营】健身私教请还是不请?
查看>>
AJPFX关于java的依赖 关联 聚合的关系解释
查看>>
AJPFX详解jsp的九大内置对象和四大作用域
查看>>
redis 该端口,设置认证
查看>>
PHP header()生成文件
查看>>
phoenixframework驱动chrome浏览器的说明
查看>>
SqlServer系列笔记——流程控制语句
查看>>
我的友情链接
查看>>
Duplicate From Active Database
查看>>
MyBatis GeneratorXML Configuration File Reference(MyBatis生成器XML配置文件参考文档)
查看>>
【微软公有云系列】 Hyper-v (WinSer 2012 R2) 网络虚拟化(二)原理
查看>>
DIV+CSS网页布局对SEO的四大影响(转自www.jqueryba.com)
查看>>
Mysql5.7设定root密码
查看>>
二十年信息化老兵入住51CTO新家
查看>>
rsync: failed to connect to x.x.x.x: No route to host (113)
查看>>
室内设计
查看>>
简单验证RIP的HOLDDOWN TIMER
查看>>
前端 js 拼接json数据 ,以及后端java转义 &quot; 字符串
查看>>
我的友情链接
查看>>
并发和高并发
查看>>