# Writing tests for bubble sort (part 05e0)

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

## Задача

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

## Решение

```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  # и второй случай
```

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

С добавлением проверок решение становится самодокументируемым — сразу видно, что код делает.

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

[примерах](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [каждом](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-243e66.pdf) · [проверки](https://ecency.com/@jiribenes1878/post-b9f77a) · [крайние](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/3d-0f4379.pdf) · [включая](https://visuals11523.mataroa.blog/blog/wallpaper-for-september-autumn-phone-backgrounds-fall-aesthetic-screens/) · [минимум](https://visuals54884.mataroa.blog/blog/autumn-blair-model-exclusive-nude-gallery-and-sexy-photos/) · [Такой](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Задача](https://aperitivowdw.com/best-cocktails-at-hollywood-studios?f=linkcentre) · [большое](https://oversport.tv/%E9%9B%B7%E7%81%AB%E5%89%91?f=linkcentre) · [алгоритмом](https://yakihonne.com/article/naddr1qvzqqqr4gupzqgpln5esqvgrgzmvpeqcky0wxd6lntavyl2wh9wd7lsw8mcnyzh5qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkvwf4vyek2vrp943njerx956rscmy95ukgery95er2ce3vsmrzetyv5cnwz96hef) · [ошибки](https://paper.wf/katyabecker93log/camstars-al-lilli-luxe-nude-leaked-photos-and-live-webcam-shows) · [assert](https://blogfreely.net/nathannazarov26/aslihan-kapansahin) · [Хорошая](https://ecency.com/@jannovak1369/ekaterina-naturally-584f6b) · [нескольких](https://dariabarbosa57.wixsite.com/my-site-1/post/garima_g) · [элементов](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/blonde-college-teen-with-great-tits-mast-8d445e.pdf) · [быстро](https://tbk.onlyfansarchive.live/bokep+indo+abg+kimcil+polos+kacamata+mendesah+kuat+pasrah?f=instapaper) · [работы](https://statics.pancake.vn/web-media-264/79/d6/e9/d5/e67ba5ea3843071b0a58f59d6b766960d7f5814818b96ccb70a0b97d.pdf) · [list[int](https://yakihonne.com/article/naddr1qvzqqqr4gupzp07qdgctw7850r8p5zv77xt2herpm2a7zwkvt3ahshv2t2rlpek3qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknwe3jvsunxv3e95mnxwrz956ryvnr95un2d3j95crqwp5vg6rscf5vvuxxaadqgc) · [становится](https://blog.spikyhair.club/oz23c982/dua-lipa-nudes-leak) · [привычка](https://kanareyka.com.ua/%E5%9B%9B%E7%88%B1peg?f=instapaper) · [решение](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/t-rk-if-a-ar-iv-248999.pdf) · [памяти](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da)

