# Writing tests for bubble sort (part 3e6f)

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

## Задача

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

## Решение

```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://hey.xyz/posts/16hxfdxftdce9h3bxhm) · [работы](https://ecency.com/@marekkral2859/znur-g-ven-pornosu-9bf234) · [вызова](https://blogfreely.net/nathannazarov26/brawlstars-rule-34) · [Проверка](https://radicle.network/nodes/seed.pipapo.org/rad%3Az27omxj1H5kb1oSmAJDfswGyNcf91/issues/1e418427ee17573998da172754986fb27fcea00e) · [случай](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [элементов](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Решение](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/dick-flashing-twitter-7aa1c1.pdf) · [конец](https://articlescad.com/tiap-hari-di-genjot-ayang-387283.html) · [алгоритмом](https://hey.xyz/posts/1rjd8exgjc5a50r842a) · [крайние](https://rentry.co/hunnypaint-623042) · [включая](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/katya-y111-a29c18.pdf) · [простейшим](https://sway.cloud.microsoft/HE2MY2agG1bbKKte) · [Сложность](https://paper.wf/sofia2001log/madxfrance) · [пузырьком](https://blogfreely.net/nathannazarov26/telebox-flm-sks-mtrjm-twytr) · [примерах](https://clubphotonice.fr/eva+joanna+naked?f=linkcentre) · [минимум](https://jaflysilve.freeflarum.com/d/4536-4536-freeonese-porn-photo-collections-with-explicit-scenes) · [самое](https://thebrainbin.org/m/random/t/1844343) · [Задача](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Такой](https://radicle.network/nodes/seed.pipapo.org/rad%3AzuTGgFHgGwZVgvrb3oW1voMwXdw3/issues/5490e319c2797f102b905213b87be2f3717d9c32) · [правках](https://articlescad.com/boys-on-vacation-gay-videos-free-hd-gay-porn-387279.html) · [большое](https://ecency.com/@jakubkolar5653/ariaxswan-6a58a7)

