本文实例分析了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 = [