Tôi đang cố triển khai tìm kiếm nhị phân trong python và đã viết nó như sau. Tuy nhiên, tôi không thể làm cho nó dừng lại bất cứ khi nào needle_element lớn hơn phần tử lớn nhất trong mảng.Thuật toán tìm kiếm nhị phân trong python
Bạn có thể trợ giúp không? Cảm ơn.
def binary_search(array, needle_element):
mid = (len(array))/2
if not len(array):
raise "Error"
if needle_element == array[mid]:
return mid
elif needle_element > array[mid]:
return mid + binary_search(array[mid:],needle_element)
elif needle_element < array[mid]:
return binary_search(array[:mid],needle_element)
else:
raise "Error"
Tôi sẽ cố gắng tránh tạo nhiều bản sao một phần của mảng, d vượt qua trong một chỉ số thấp hơn và trên thay thế. Sau đó, bạn chỉ cần dừng lại nếu thấp hơn> trên. –
Có thể muốn xem [nhị phân-tìm-trong-python] (http://stackoverflow.com/questions/212358/binary-search-in-python) – nawfal