@ganjo888

Как правильно решить задачу при помощи бинарного поиска?

В первой строке даны целое число и массив n различных натуральных чисел пример ( 5 1 5 8 12 13) массив отсортированный.
во второй строчке — целое число и k натуральных чисел пример(5 8 1 23 1 11)
нужно для каждого из этих чисел(5 8 1 23 1 11) найти это число в массиве(5 1 5 8 12 13) и вывести его индекс, если нет такого числа в массиве вывести -1.
Что я не правильно делаю подскажите пожалуйста, у меня выводятся лишние -1
lengthA, *a = map(int, input().split())
lengthB, *b = map(int, input().split())

for i in b:
    l = 0
    r = lengthA 
    while l < r:
        m =int((l+r) / 2)
        if a[m] == i:
            print(m)
            break
        elif a[m] > i:
            r = m - 1
        else:
            l = m + 1
    print(-1)
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
shabelski89
@shabelski89
engineer
не понял для чего
целое число

но зачем while?
nL = [5, 1, 5, 8, 12, 13]
kL = [5, 8, 1, 23, 1, 11]
for i in kL:
    if i in nL:
        print('%s index - %s' % (i, nL.index(i)))
    else:
        print(-1)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы