# Step-by-step: binary search (part f143)

Медленный разбор помогает понять код, а не просто скопировать его.

## Задача

Дан отсортированный список чисел `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. **Шаг 1. Входные данные.** Проверяем, что приходит в функцию, и какие значения считаются корректными.
2. **Шаг 2. Основной цикл.** Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
3. **Шаг 3. Результат.** Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

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

[времени](https://ecency.com/@jirikral2369/cielitobebe-videos-y-fotos-filtradas-de-onlyfans-8fef87) · [каждом](https://kappa.lol/YDlSKd) · [O(log](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [какие](https://team.writefreely.dev/oz936174/anal-vouyerism-free-anal-porn-videos-and-hd-galleries) · [значение](https://privatebin.devol.it/?d9bbf6bc3420a219#8YrcBBkVowFJMoF8GJHM8bmA1JmkgmtsQJEgCPQTYa1s) · [изменениями](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mia-whitte-effc6d.pdf) · [Пример](https://djansen573.wixsite.com/my-site-1/post/%D8%BA%D8%B7%D8%A7%D8%A1-%D9%83%D9%86%D8%A8) · [слева](https://discuss.tchncs.de/post/65445222) · [return](https://tecnosepsis.com/%D0%BC%D0%B8%D1%81%D1%81+%D1%8E%D0%BD%D0%B0%D1%8F+%D0%BD%D1%83%D0%B4%D0%B8%D1%81%D1%82%D0%BA%D0%B0?f=linkcentre) · [переменных](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/digit-sum-dva-sposoba-mvdsregx.md) · [while](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/camila-pati-o-desnuda-175e05.pdf) · [Задача](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-razbor-mvdsq6k8.md) · [случаи](https://articlescad.com/veronica-obando-99-onlyfans-exclusive-photos-and-videos-383689.html) · [Отсюда](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-c0c9b6.pdf) · [включая](https://jaflysilve.freeflarum.com/d/3020-3020-oedy9) · [arr[mid](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Решение](https://privatebin.devol.it/?6e96c9380491cf83#78ueiEPQtwRMqTz12NBw8eYZDm8Q8qGZXhTzYnZiHvBa) · [разбор](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nanacute-2cb7fc.pdf) · [Входные](https://radicle.network/nodes/index.radicle.garden/rad%3Az23HnHaqk7CZ2GVag5HyjQktwNLJk/issues/2e4b94f62ea627f62c106a64b6d9d917e8b655f3) · [лотереей](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [Проверяем](https://mape-eth.com/shaneanddaff?f=instapaper) · [здесь](https://blogfreely.net/nataliarussell2/nudist-beauty-pageants) · [скопировать](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nudeblowjob-cca4c9.pdf)

