# Writing tests for bubble sort (part a6a7)

Посмотрим на задачу глазами разработчика: сначала решение, затем убеждаемся в его корректности.

## Задача

Отсортировать список чисел по возрастанию простейшим алгоритмом — сортировкой пузырьком.

## Решение

```python
def bubble_sort(arr: list[int]) -> list[int]:
    a = arr[:]
    n = len(a)
    for i in range(n):
        for j in range(n - 1 - i):
            if a[j] > a[j + 1]:
                a[j], a[j + 1] = a[j + 1], a[j]
    return a


print(bubble_sort([5, 1, 4, 2, 8]))
```

## Как это работает

На каждом проходе самое большое из оставшихся элементов «всплывает» в конец. Внутренний цикл сокращается на `i`, ведь хвост уже отсортирован.

## Пример работы

```text
[1, 2, 4, 5, 8]
```

## Сложность

O(n²) по времени, O(1) по памяти (без учёта копии).


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

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

[каждом](https://gymn1.odessa.ua/%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-%D0%BF%D0%BE%D0%BB%D1%8C%D1%88%D0%B5-%D0%BD%D0%B0-%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%BC?f=instapaper) · [элементов](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/t-rbanl-ayak-b5b1b7.pdf) · [оставшихся](https://paste2.org/j7UvbGYO) · [return](https://yakihonne.com/article/naddr1qvzqqqr4gupzp0fs3qrjk6f6qjuyxl40k64257lxynwwmtuqw4ynn7j729ycu2wfqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkgvesx5cxvcf494nryeph956r2ve3943rwef495cx2wt9x9nrxetyv33ky83uw87) · [Сложность](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/privacy-leticia-vargas-dad09b.pdf) · [проходе](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [включая](https://radicle.network/nodes/index.radicle.garden/rad%3Az2aFuBYpxJYqwqeaS7wzeESoRvyC7/issues/59b3fc5fb067050862294542be70e363301d8990) · [Посмотрим](https://rentry.co/gallery-910283) · [глазами](https://articlescad.com/r34-alien-stage-nsfw-alien-femdom-character-ai-chats-385207.html) · [базовая](https://kappa.lol/NlR90S) · [работает](https://tiuri.blog/tinas_space?f=instapaper) · [нескольких](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rimesasageyo-6fa523.pdf) · [случаи](https://rentry.co/f8ac9bpn) · [задачу](https://danielsokolov2.wixsite.com/my-site-1/post/thattoyotachick) · [чисел](https://exhibit87598.mataroa.blog/blog/indian-dise-xxx/) · [len(a](https://paste.rs/YFzJL) · [Внутренний](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mattiegarf-sf-9660fe.pdf) · [фреймворков](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [большое](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az3VJ82i4mfubTmLXgKrLn8RNCWpDo/issues/9794abcb25a5b649268d0f639a3448bd40817f64) · [тестами](https://paper.wf/greta1995log/veronica-silesto-miracle-party-photo-gallery) · [примерах](https://jaflysilve.freeflarum.com/d/3610-3610-turbanli-ayak-ayak-fetisi-fotograf-galerisi) · [работы](https://blogfreely.net/igorcollins26/hindi-bhasha-mein-bf) · [проверять](https://montage12292.mataroa.blog/blog/slippery-minecraft-porn-jenny-belle-3d-hentai-animation/) · [Хорошая](https://sway.cloud.microsoft/h2YZ6PG1QMb3IHgy) · [python](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [конец](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az4N3iCgCTyTvgVupGcmJzN8zPVYw1/issues/37107247bc202bbaad2852a3c5cd2b08c6056242) · [пузырьком](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/7-3d-7ff6d5.pdf) · [короткие](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/eurotic-tv-kristina-ee3002.pdf)

