# Step-by-step: binary search (part 0db5)

Пройдём задачу шаг за шагом — такой формат удобен для первого знакомства с алгоритмами.

## Задача

Дан отсортированный список чисел `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://comics.blue/%EB%82%98%EB%AF%B8+%EC%95%BC%EC%A7%A4?f=instapaper) · [while](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/emmi-sellers-mega-best-adult-videos-and-be8049.pdf) · [отсортированный](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/twitter-lise-if-a-918dfe.pdf) · [знакомства](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [корректными](https://fermer.dp.ua/desi+aunty+peeing?f=linkcentre) · [Основной](https://radicle.network/nodes/index.radicle.garden/rad%3Az3SwCUaZ1YsjEnchQWNB9nNovZWDS/issues/01e60c64b5a0064eaa38e9ad7db58b5e0cff4445) · [скорость](https://privatebin.devol.it/?c2ce1cc6f7a53cf2#HCT8igCqBB24P24KykBauqyPkr3AhBZG843MH1JeNeWa) · [удобен](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-cewek-indonesia-sepupu-63face.pdf) · [вдвое](https://ecency.com/@lukaskral2261/post-5364aa) · [возвращаемое](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/is-prime-tests-mvfab00c.md) · [Проверяем](https://yakihonne.com/article/naddr1qvzqqqr4gupzpthsz6q4rsvzxwlfvmt4ufctp9pf9s8qh7x6ql0ed7zw20cmmu54qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngdekxqcn2ces943rjce5956rxd3595urqwtx95mnwdmpxumkzwpcxpsnz29leag) · [шагам](https://discuss.tchncs.de/post/65439723) · [Задача](https://statics.pancake.vn/web-media-264/8f/04/b3/10/530a86299cdbd6cca57114e080362162f1e536c9d18255bcc4d908f3.pdf) · [каждый](https://u9.pics/bachelorette+pt.+3+layla+jenner?f=linkcentre) · [крайние](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/zawh-petite-peach-sf-040a1b.pdf) · [Входные](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [первого](https://sway.cloud.microsoft/ckoMI9w8J3ZAsXHv) · [данные](https://paste2.org/jIezpOXH) · [каждой](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [значение](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/brackets-shagi-mvf9d493.md) · [функцию](https://news-ctl-posts.hashnode.dev/two-ways-to-solve-primality-testing-part-487a) · [Именно](https://privatebin.devol.it/?26634847acb99851#FAPpv6YnaB75uw6HWNEkmFk366SHQbrdjRMnXa9LYL6B) · [приходит](https://curated28383.mataroa.blog/blog/a83-76-104/)

