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))
バイナリ検索アルゴリズムです。私には2つの質問があります。バイナリ検索プログラム
質問1: first
が次の行に必要なのはなぜですか?
mid = first + (last - first)/2
質問2: 私はプログラムを実行したとき、私は、結果を実行することはできません。 エラーメッセージは次のとおりです。
range indices must be integers or slices, not float.
私はそれを解決できますか?
「python 3 float」、「python 3 range function」、およびエラーメッセージでグーグルで何を見つけましたか? – philipxy