Поиск одинаковых элементов в бинарном поиске после Python
Подскажите, пожалуйста, что сделать, чтобы бинарный поиск в программе продолжался дальше, если искомый элемент уже найден. Например, нужно найти число 2. А оно встречается три раза в списке. Спасибо!
Ответы (2 шт):
Автор решения: Opium
→ Ссылка
в зависимости от вашего кода конечно, но вы можете оформить что-то типа этого: Поиск в таблице чисел.
def grade(score, breakpoints=(60, 70, 80, 90), grades='FDCBA'):
i = bisect(breakpoints, score)
return grades[i]
[grade(score) for score in [33, 99, 77, 70, 89, 90, 100]]
['F', 'A', 'C', 'C', 'B', 'A', 'A']
Автор решения: CrazyElf
→ Ссылка
Поскольку бинарный поиск делается в отсортированном списке, то после нахождения нужного элемента бинарным поиском просто проходите по списку сначала влево от найденного элемента, пока элементы списка совпадают с искомым, а потом точно так же вправо.
[0, 1, 1, 2, 2, 2, 3, 4, 4, 5, 5, 5, 6, 7, 7]
^
| например, бинарный поиск найдёт этот элемент