1
我正在切換到Python並正在練習一些基本的邏輯流程,並且我編寫了二進制搜索功能。有沒有更優雅的寫法呢?例如,我不喜歡如何將最初的格言設置爲10 ** 99(這只是包含任何實際列表大小的一種方式)。Python中的二進制搜索,更優雅的方法?
def binary_search(val, arr, minum=0, maxim=10**99):
if val < arr[0] or val > arr[-1]:
return "Not in range"
arr = arr[minum:maxim]
middle = int(len(arr)/2)
maxim = len(arr)
if val == arr[middle]:
return middle
elif val > arr[middle]:
return middle + binary_search(val, arr, middle, maxim)
else:
return binary_search(val, arr, 0, middle)
你見過這個:https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html – gregory
這個問題可能比[SO]更適合[codereview.SE]。 –
您的else語句中可能有邏輯錯誤。如果該行不是'return binary_search(val,arr,minum,middle)',與你的'elif'分支對稱嗎? –