我需要展示迭代和递归二分查找算法渐进运行时间分析的差异。据我所知,它们的最坏情况复杂度相同(O(log(n))),但在一些资源中,递归算法的复杂度为 O(log(n)+1)。我有点困惑,能否有人帮我解决这个问题?
另外,我需要改进一个Python递归二分查找算法,使其与迭代算法一样快。下面是代码。
谢谢!
def binarySearch(alist,item):
if len(alist) == 0:
return False
else:
midpoint = len(alist)/2
if alist[midpoint] == item:
return True
else:
if item<alist[midpoint]:
return binarySearch(alist[:midpoint],item)
else:
return binarySearch(alist[midpoint+1:],item)