# Writing tests for bubble sort (part 0468)

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

## Задача

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

## Решение

```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://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/cursos-para-aprender-a-usar-shopify-bfb480.pdf) · [сначала](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-jilbab-tante-a71a04.pdf) · [минимум](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/antonia-mackenzie-xvideos-40319f.pdf) · [сортировкой](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-8c450d.pdf) · [range(n](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/lily-xxx-leaks-9593ec.pdf) · [второй](https://kappa.lol/OumrQy) · [делает](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/plak-ya-l-kad-n-resimleri-b24dd6.pdf) · [видно](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [возрастанию](https://jaflysilve.freeflarum.com/d/3090-3090-turk-ensest-ifsa-videolari-ve-gizli-cekimler-paylasimi) · [корректности](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [самое](https://writefreely.ethibox.fr/oz82c64c/nepaliwives69-nepali-wife-sex-videos-and-porn-clips) · [Отсортировать](https://team.writefreely.dev/oz711d48/brima-modeller) · [большое](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-95d433.pdf) · [становится](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bellasabini-f795f0.pdf) · [привычка](https://paper.wf/almahoffmann80log/united-kingdom-economic-growth-rate) · [правках](https://rimworld.gallery/m/random/t/16298) · [Хорошая](https://rentry.co/kkuzzu46) · [нескольких](https://kappa.lol/HLMko0) · [всплывает](https://nowaksergey71.wixsite.com/my-site-1/post/moderne-interierove-svietidla) · [list[int](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [список](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-f52195.pdf) · [случай](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/selena-aunty-5e4ee3.pdf)

