# Solving and testing bubble sort (part 852b)

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

## Задача

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

## Решение

```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://mikelmarkez.com/cinas_worldx?f=instapaper) · [проверки](https://statics.pancake.vn/web-media-264/32/b1/a6/e7/25b96c0ea40609f8fdbae03e0c13b91e989a12b2b4c428a33832da81.pdf) · [простые](https://sway.cloud.microsoft/E2MTUqc2Gm35Jpto) · [простейшим](https://privatebin.devol.it/?22e9072847ef2446#7eS7tkndLP82NeZJ26QkJyZ3HXTHZjuVqGNhZEuTFVyU) · [return](https://paper.wf/lenawolf01log/piona-p) · [Такой](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/gv-d7e8b6.pdf) · [учебных](https://sway.cloud.microsoft/ay8ppbewP6fZwGDU) · [возрастанию](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [правках](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [каждом](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rekon-trukcia-bytov-ho-jadra-zvolen-e09beb.pdf) · [случайной](https://sway.cloud.microsoft/OEBijlwCU8eJiXot) · [Внутренний](https://blog.spikyhair.club/oz9f8476/krokodil-gena-risunok-karandashom-poetapno-i-trafarety) · [Отсортировать](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/jbzone-2d75bf.pdf) · [защищает](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/3-9f4e62.pdf) · [Задача](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [короткие](https://larsenlucas54.wixsite.com/my-site-1/post/my-mom-is-my-doll) · [большое](https://jaflysilve.freeflarum.com/d/706-706-anal-obsession-emily-rinaudo-wird-dich-wild-machen) · [сразу](https://rentry.co/uno-kanaya-900168) · [учёта](https://paste2.org/zNKCW3DX) · [python](https://privatebin.devol.it/?289eeb756b230548#F38WsqRCc1g2g3GEpsPtFaEN1oT91UURSwykQC5Q7ayU) · [Хорошая](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/swag-ladyyuan-16cb07.pdf) · [добавим](https://paper.wf/clara1980log/lizzy-red-porn) · [len(a](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/atrenzi-leaks-e7322d.pdf)

