リスト全体の代わりにリストスライスを渡すと、このリストのバイナリ検索が高速化しますか?リストには何百万ものアイテムがありますか?通常リスト全体ではなくバイナリ検索の通過リストスライス
:
def binary_search(data, target, low, high):
if low > high:
return False
else:
mid = (low + high) // 2
if target == data[mid]:
return True
elif target < data[mid]:
return binary_search(data[low:mid-1], target, 0, mid)
else:
return binary_search(data[mid+1:high], target, 0, high-mid)
私は現在、これがあれば、私は本当に知らないので、アルゴリズムについて学んでいます:リストのスライスに
def binary_search(data, target, low, high):
if low > high:
return False
else:
mid = (low + high) // 2
if target == data[mid]:
return True
elif target < data[mid]:
return binary_search(data, target, low, mid-1)
else:
return binary_search(data, target, mid+1, high)
(私はそれを少し変更する必要がありました)ベストプラクティスかどうか。
'data [x:y]'は新しい 'list'オブジェクトを作成します。既存のリストへのビューは返されません。 – chepner