python二分検索

3575 ワード

整列配列、二分検索
numbers = [1,3,5,6,7,8,13,14,15,17,18,24,30,43,56]
head,tail = 0,len(numbers)
search = 24

while tail -head >1:
    mid = (head + tail)//2
    if search == numbers[mid]:
        ans = mid
        break
    elif search < numbers[mid]:
        tail = mid
    else :
        head = mid
else:
# tail == head ,     ,   head ,       
    if search == numbers[head]:
        ans = head
    else:
        ans=-1

print(ans)