明霞山资源网 Design By www.htccd.com
本文实例分析了Python二分法搜索算法。分享给大家供大家参考。具体分析如下:
今天看书时,书上提到二分法虽然道理简单,大家一听就明白但是真正能一次性写出别出错的实现还是比较难的,即使给了你充足的时间,比如1小时。如果你不是特别认真的话,可能还是会出一些这样那样的错误,所以就尝试了自己去实现一下,看能否一次通过,结果自然不言而喻,虽然用的时间不长,但是我失败了,呵呵。
个人觉得失败的最主要原因是自己没有认真的先想好这个思路和可能出现的分支情况,而是直接凭主观臆想就去写代码了,完全正中书上所说的行为,所以也如书上所说,出错了。后经调试应该是得到了基本的正确算法,内容如下:
#!/usr/bin/env python
#encoding: utf-8
def half_search(search_arr, search_str):
lb = 0
ub = len(search_arr) - 1
for i in range(ub/2 + 1):
if lb > ub:
return -1
mid = (ub + lb)/2
if search_arr[mid] == search_str:
return mid
elif search_arr[mid] > search_str:
ub = mid - 1
else:
lb = mid + 1
if __name__=='__main__':
arr = [10,20,30,40,50,60,70]
print half_search(arr, 1)
print half_search(arr, 11)
print half_search(arr, 22)
print half_search(arr, 33)
print half_search(arr, 40)
print half_search(arr, 55)
print half_search(arr, 66)
print half_search(arr, 70)
print half_search(arr, 8)
结果:
-1 -1 -1 -1 3 -1 -1 6 -1
正整数代表在数组中的下标,3那就是第4个位置;-1代表不存在
总结:
实现简单的算法之前,如果已经有了一套最简易的实现【比如直接打印100条相似的内容】,不妨要想想是否还有更精巧的实现【可否用循环+参数化替代】;实现稍微复杂点的算法时,不妨先在纸上画出各种可能的验证情况,避免实现是缺胳膊短腿的;还有一点就是算法什么的还是要多练,不然稍微复杂的过一阵可能就会忘记细节了。我想这就叫术业有专攻吧!
希望本文所述对大家的Python程序设计有所帮助。
标签:
Python,二分法,搜索算法
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。