# 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 значениях, прежде чем считать задачу решённой.

Заметив такую ошибку в чужом коде, вы уже мыслите как ревьюер.

**Читайте также:**

[сокращается](https://collection65449.mataroa.blog/blog/canaria-follada/) · [памяти](https://frames56534.mataroa.blog/blog/caroliny-dreher-nudes-fotos-vazadas-da-novinha-gostosa/) · [Отсюда](https://kappa.lol/hAg4O8) · [решение](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-b733ce.pdf) · [while](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [багов](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [источник](https://sway.cloud.microsoft/NAVzG21YwfVbwvEV) · [справа](https://kappa.lol/uH7Wf6) · [случаи](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nina-drama-tits-605762.pdf) · [неявное](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2VT8pGEuBUf2sevFwMJASKF51ei2/issues/3d622f383c3698556450245081d97f0a4560296a) · [задачу](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/t-rk-t-rbanl-plak-k-yl-kad-n-resimleri-9737ec.pdf) · [Смешивать](https://pen.absturztau.be/oz8ea060/16ib8g77mg) · [Решение](https://paper.wf/irenaklein89log/santoormomrachna) · [Строки](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [приведение](https://romanmiller22.wixsite.com/my-site-1/post/kumpulan-bokep-bocil) · [меньше](https://radicle.network/nodes/index.radicle.garden/rad%3Az29mFNPAnQqvqSh3mBd8cZqQC5SRg/issues/7b13e527da78673cd364b6995e5df0cbde976c4e) · [работает](https://verulamiansrfc.club/shinjini+chakraborty+sex+video?f=instapaper) · [вдвое](https://blog.spikyhair.club/oz20f30a/hannahansku-nude-onlyfans-leaked-photos-and-videos-gallery) · [Пример](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/aibanwork-e43678.pdf) · [числа](https://rimworld.gallery/m/random/t/16280) · [len(arr](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sinem-zg-r-onlyfans-photo-0251f9.pdf) · [видно](https://kappa.lol/7EvLIC) · [поиска](https://jamesp799.wixsite.com/my-site-1/post/cikaimoon---outdoor-adventures-and-intimate-selfies-under-the-moon) · [обычно](https://radicle.network/nodes/index.radicle.garden/rad%3Az2xYbMQ6zFgtPMJhQQ6buTaQYNQgA/issues/09fb9fef2053560a346ab30aaffa373246e5b65f)

