Почему моя программа двоичного поиска в python работает некорректно? - PullRequest
0 голосов
/ 07 мая 2020
# Binary search in python
def BinarySearch(A,n,x):
    start = n - 1
    end = 0
    while start <= end:
        mid = (start + end)//2
        if x == A[mid]:
            return mid
        elif x < A[mid]:
            end = mid - 1
        else:
            start = mid + 1
    return -1


A = [4, 5, 7, 45, 64, 66, 80, 81, 92, 99]
n = len(A)
x = 64
result = BinarySearch(A,n,x)
if result != -1:
    print(result)
else:
    print("element is not in the array")

вывод: элемент отсутствует в массиве, какой бы элемент я ни передавал в этот код, он всегда дает один и тот же вывод

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Это потому, что вы назначили неправильные значения для начала и конца согласно al go.

start = 0
end = n - 1

Поместите эти значения, и он запустится.

PoW

0 голосов
/ 07 мая 2020

Поменять местами начальное и конечное значения переменных:

    start = 0
    end = n-1
...