次のコードを書きました。
def binary_search(key,lst):
""" iterative binary search
lst better be sorted for binary search to work"""
n=len(lst)
lower=0
upper=n-1
outcome=None # default value
while lower<=upper:
middle=(upper+lower)//2
if key==lst[middle].name: # item found
outcome=lst[middle]
break # gets out of the loop if key was found
elif key<lst[middle].name: # item cannot be in top half
upper=middle-1
else: # item cannot be in bottom half
lower=middle+1
return outcome
リストを2つではなく3つの部分に分割するように変更しようとしています。つまり、バイナリ検索ではなくなりますが、反復ごとにアルゴリズムがリストを3つのセクションに分割します。
これを実装できませんでした。
どんな助けでも大歓迎です。