Я пытаюсь написать бинарный поиск, который принимает упорядоченный список и находит наибольшее число меньше заданного значения:Как найти максимальное число, меньшее целевого значения в списке?
def binary_max(list, target)
hi=len(list)-1
lo=0
while lo<=hi:
mid=(hi+lo)//2
midval=list[mid]
if midval > target:
hi=mid-1
elif midval <= target:
lo=mid
if hi==lo:
break
return(list[mid])
pass
однако, когда, например, есть список с длиной 2, привет = 1 и среднее значение всегда будет зависеть от lo , так или иначе, чтобы избежать этой проблемы?
благодаря
Это может показаться глупым, но: Можете ли вы обновить свой вопрос, включив в него полную функцию и код, чтобы позвонить? – YXD
seldon 'while' loop является идиоматическим в Python, если он не является бесконечным циклом (' while True') –
@PauloScardine, но если вы посмотрите в 'bisect.py' ... –