# Walking through binary search (part fef8)

Разберём задачу, которая встречается практически в каждом учебнике по программированию.

## Задача

Дан отсортированный список чисел `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://markp02.wixsite.com/my-site-1/post/%E5%87%8C%E8%BE%B1%E5%B0%A4%E5%A8%9C%E5%B0%8F%E6%B8%B8%E6%88%8F) · [отсортированный](https://team.writefreely.dev/oz711d48/fidan-atalay-ifsa-ogretmenin-cesur-pozlari-ve-sirlari) · [точка](https://hey.xyz/posts/16hxbwjdetkjgss4ttq) · [Задача](https://radicle.network/nodes/seed.pipapo.org/rad%3Az2jcm8fftJLphzTFg8faxYZFyah8j/issues/7024ec8ee67dfebcdb116bb46668153d7796c20b) · [логарифмическая](https://discuss.tchncs.de/post/65442763) · [проследить](https://sway.cloud.microsoft/vlyxDKurWVojcfAD) · [число](https://kinezika.si/natasha+nice+kaiia?f=instapaper) · [Разберём](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-3fc63c.pdf) · [скорость](https://yakihonne.com/article/naddr1qvzqqqr4gupzp4d95r5u0k0962mh9w46znra5z8tqpycg3rr8dsm5qx2g32aqjt6qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknqefn8q6xgefe956nsef5956rjvnz95unyvph95mkzvenx56njcnyxvck27kvlph) · [диапазон](https://circlek.ae/circle-k-franchise-careers?f=instapaper) · [удобно](https://radicle.network/nodes/seed.pipapo.org/rad%3AzvP2awB7Hc4dpmamU5ex7WF8Qm4C/issues/5f6876786b5a832a28e62f11998d3ef401e4487d) · [практически](https://team.writefreely.dev/oz711d48/fokings) · [слева](https://blogfreely.net/igorcollins26/bokep-indonesia-jilbab-terbaru-video-hot-terbaru-2025) · [справа](https://gal18866.carrd.co/) · [экспериментов](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/anagram-oshibki-mvdpclze.md) · [времени](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [сокращается](https://gall.dcinside.com/mgallery/board/view/?id=nmixxreality&no=3554) · [программированию](https://privatebin.devol.it/?23d6a9bb44ed117e#C28YfCu4rJ5CKbwH7N6FoufqHNpVxGYJ12QUj9g129aJ) · [работает](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/average-razbor-mvdtryyk.md) · [Сложность](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/digit-sum-razbor-mvdr0t4c.md) · [памяти](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [len(arr](https://drop.xtrafrancyz.net/selif/qjz1smcc5g.pdf)

