# Two approaches to binary search (part 3d4d)

У большинства учебных задач есть минимум два честных решения — сравним их.

## Задача

Дан отсортированный список чисел `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) по памяти.


## Альтернативный подход

Ту же задачу часто решают иначе: например, через рекурсию вместо цикла или через стандартную библиотеку вместо ручной реализации. Альтернатива обычно короче, но первое «ручное» решение лучше показывает механику работы алгоритма. Полезно написать оба и сравнить на одинаковых тестах.

Оба подхода рабочие; важно понимать цену каждого, а не копировать первый попавшийся.

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

[работает](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [задачу](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [иначе](https://kappa.lol/h9e5NV) · [обычно](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/itati-joss-desnuda-cba7a1.pdf) · [вернуть](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/serpil-cans-z-taha-zer-644652.pdf) · [диапазон](https://statics.pancake.vn/web-media-264/05/f2/9f/4c/e456a84f05a42184105d778c31677f4f5c88ae930b55baba77e26e96.pdf) · [цикла](https://alenai76.wixsite.com/my-site-1/post/%E9%9B%8C%E5%A0%95%E8%AE%AD%E7%BB%83) · [return](https://articlescad.com/3d-385086.html) · [решают](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/omegle-teen-game-porn-96b316.pdf) · [Задача](https://leahleroy990.overblog.fr/2026/10/post-47.html) · [первое](https://paper.wf/alma2004log/trannytune) · [понимать](https://articlescad.com/the-hunger-games-384967.html) · [list[int](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-34a93e.pdf) · [лучше](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Пример](https://portfolio29811.mataroa.blog/blog/imxto-valensiya-brima-models-bedroom-furniture-gallery/) · [O(log](https://gall.dcinside.com/mgallery/board/view/?id=thekpop&no=64473) · [Сложность](https://articlescad.com/watch-omegle-teens-game-hot-amateur-video-collection-384812.html) · [механику](https://sway.cloud.microsoft/8JXblJTWyPBtxaIF) · [скорость](https://writefreely.ethibox.fr/oz82c64c/android-phone-that-looks-like-iphone) · [ручной](https://jaflysilve.freeflarum.com/d/3447-3447-hina-mano-nude) · [одинаковых](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/starsession-aleksandra-a53fc1.pdf)

