Двоичная функция, которая ищет элемент в отсортированном списке, всегда возвращает -1 - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь найти отсортированный список, состоящий из

sortedList=[2,5,7,9,11,17,222]

Проблема: К сожалению, код, который я написал последовательно, возвращает -1

import math

def binarySearch(li, ele):
    lowest = 0
    highest = len(li)-1
    index = -1
    while highest>=lowest and index==-1:
        mid = int(math.floor((highest+lowest)/2.0))
        if li[mid]==ele:
            index = mid
        elif li[mid]<ele:
            highest = mid-1
        else:
            lowest = mid+1

    return index

sortedList=[2,5,7,9,11,17,222]
print(binarySearch(sortedList,11))

Ожидаемый результат : Возвращение индекса для данного целого числа в sortedList

1 Ответ

1 голос
/ 06 апреля 2019

Есть логическая ошибка. Просто измените <на>.

while highest>=lowest and index==-1:
    mid = int(math.floor((highest+lowest)/2.0))
    if li[mid]==ele:
        index = mid
    elif li[mid] > ele:  # this line
        highest = mid-1
    else:
        lowest = mid+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...