ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用python实现二分查找,超级详细,图片加案例

2021-10-21 21:04:58  阅读:142  来源: 互联网

标签:二分 python epsilon list value 查找 ans print


1.概念

二分查找也叫折半查找,是一种普遍的查找方式

2.算法使用条件

1.必须采用顺序存储结构
2.必须按关键字的大小有序排列
3.本次案例采用升序

3.查找方式

序列中间位置的值与查找的值比较如果相等查找结束,如果比中间值大,去掉中间值左边,将右边作为新的序列进行查找,如果小则相反,如此循环,直到查完列表。

4.上代码

def binary_search(data_list,value):
    '''
    data_list:传入有序序列
    key:查找的值
    '''
    min_value=0     #最小下标
    max_value=len(data_list)-1  #最大下标
    count=1                 #次数
    while min_value<=max_value:
        cur=(max_value+min_value)//2    #取中间值
        if data_list[cur]==value:
            return '查找次数为%d在data_list的索引为%d'%(count,cur)
        elif data_list[cur]>value:
            max_value=cur-1
        else:
            min_value=cur+1
        count+=1
    return '一共找了%d次,找不到这样的值'%count

print(binary_search([2,3,4,5,6],6))           

#二分查找求值的平方根(近似值)

x=25
epsilon=0.01
step=epsilon**2
numGuess=0
ans=0.0
#用穷举法找到那个最相近的值
while abs(ans**2-x) >= epsilon and ans<=x:
    ans+=step
    numGuess+=1
print('numGuess',numGuess)  #查找次数
if abs(ans**2-x)>=epsilon:
    print('未找到平方根',x)
else:
    print(ans,'是%d的平方根'%x)

5.上图片

 

标签:二分,python,epsilon,list,value,查找,ans,print
来源: https://blog.csdn.net/weixin_52227083/article/details/120894702

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有