【发布时间】:2018-01-08 04:25:14
【问题描述】:
def bsearch(s, e, first, last):
print(first, last)
if (last - first) < 2:
return s[first] == e or s[last] == e
mid = first + (last - first) / 2
if s[mid] == e: return True
if s[mid] > e: return bsearch(s, e, first, mid - 1)
return bsearch(s, e, mid + 1, last)
def search1(s,e):
print(bsearch(s, e, 0, len(s)-1))
print('Search complete')
def testSearch():
s = range(0, 1000000)
input('binary,-1')
print(search1(s, -1))
二分查找算法。我有两个问题。
问题 1:
为什么下面一行需要first?
mid = first + (last - first) / 2
问题 2: 当我运行程序时,我无法运行结果。 错误信息是:
range indices must be integers or slices, not float.
我该如何解决?
【问题讨论】:
-
当你用谷歌搜索“python 3 float”、“python 3 range function”和你的错误信息时,你发现了什么?
标签: python python-3.x