# Solving and testing bubble sort (part 8f11)

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

## Задача

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

## Решение

```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://sway.cloud.microsoft/ay8ppbewP6fZwGDU) · [проверка](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-782986.pdf) · [правках](https://ecency.com/@marekkral2859/hazey-haley-onlyfans-sex-d095b3) · [примерах](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [поэтому](https://rimworld.gallery/m/random/t/16299) · [проверять](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/lily-ce13fb.pdf) · [оставшихся](https://blogfreely.net/nataliarussell2/sanadong-man-kmwl) · [range(n](https://gazel.biz/paige+uncaged+leak?f=instapaper) · [пузырьком](https://kappa.lol/oV1612) · [ломается](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/12baegirl-b0415e.pdf) · [Отсортировать](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/duo-3-kvetinas-naomi-sergei-148d4b.pdf) · [добавим](https://auto-svit.in.ua/join/sks+l%60m?f=linkcentre) · [python](https://yakihonne.com/article/naddr1qvzqqqr4gupzpm4dky9a8ts7w7hw0fw8g8f7lps66uss69vam58nc3xdx57kyns6qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykk2dnx8yunsdfe95unqery956rxdny943xgdps943nxd3cvf3rwvpev93k2r8s84e) · [работы](https://raindrop.io/undefined/collection-75601863) · [алгоритмом](https://paper.wf/maria1976log/sks-mhrm-mtrjm-khwn-sks-y-ly-mhrm-m-l-kht-lmthyr) · [чисел](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [становится](https://yakihonne.com/article/naddr1qvzqqqr4gupzqhgk38e95c7dhn2qasm9wp9d65w4pjlawj8jdu73zlt6dt5ft2uaqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzdrzxajnwv3n94sn2epk956rqeph95ukgepe94jnycf4v3jkvctrvgexy46kvkg) · [сразу](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [list[int](https://sway.cloud.microsoft/ljrU8gnu1hf230cG) · [тестов](https://yakihonne.com/article/naddr1qvzqqqr4gupzpsyrtm836gj3d4ea79l9emj9uvr6zmkxzaemwv2a0dhxahxlpseuqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzvfjxgmngd3c94nx2wrp956xgefc943xvepk95mnwe3exy6njve3x5exzlnxjxp) · [Проверка](https://drop.xtrafrancyz.net/selif/ry2tmbhkak.pdf) · [случай](https://drop.xtrafrancyz.net/selif/ktdf0bm8se.pdf) · [Хорошая](https://privatebin.devol.it/?6ef598beb70a36eb#6y1mxTXhLfLDesAUkH9M2bhufMQmatHuojskNkL8qsHc) · [проверки](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rayjazlyn-501f44.pdf) · [Сложность](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bursa-orhangazi-escort-75c555.pdf) · [элементов](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-eb49d0.pdf)

