Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Common mistakes in binary search
- Помимо самого решения, собрал частые ошибки, которые новички допускают в этой задаче.
- Задача
- Дан отсортированный список чисел arr и число target. Найти его индекс или вернуть -1, если элемента нет.
- Решение
- ``python
- def binary_search(arr: list[int], target: int) -> int:
- lo, hi = 0, len(arr) - 1
- while lo <= hi:
- mid = (lo + hi) // 2
- if arr[mid] == target:
- return mid
- if arr[mid] < target:
- lo = mid + 1
- else:
- hi = mid - 1
- return -1
- print(binary_search([1, 3, 5, 7, 9, 11], 7))
- `
- Как это работает
- На каждом шаге диапазон поиска сокращается вдвое: если середина меньше цели — ищем справа, иначе слева. Отсюда и логарифмическая скорость.
- Пример работы
- `text
- 3
- ``
- Сложность
- O(log n) по времени, O(1) по памяти.
- Частые ошибки
- 1. Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается.
- 2. Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов.
- 3. Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
- Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.
- View Full Gallery → https://go.cbrop.com/prse
- Related:
- https://kappa.lol/vFJYsD
- https://ink.synkosmos.org/ozd1c055/djagon85
- https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/bootyandthebeast69-swap-7a72e8.pdf
- https://yakihonne.com/article/naddr1qvzqqqr4gupzppevz8g38vxzcudurydhdm647e3q8m48e5fgv0840uqp7t3qfwykqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknxdmzx33kydmy94jkydrz956rxwrr95ur2ctr956nxde5xv6kxdfsvy6x2lyuehs
- https://pastebin.com/iEvErAuc
Advertisement
Add Comment
Please, Sign In to add comment