# Solving and testing bubble sort (part 568c)

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

## Задача

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

## Решение

```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_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [включая](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [затем](https://jeanmoulin-forbach.fr/ts+%E5%B0%8F%E9%87%8E%E9%85%B1?f=instapaper) · [базовая](https://paper.wf/sofiabraun69log/alekscole-onlyfans-leaks) · [Решение](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/dadeleine-d24865.pdf) · [случайной](https://elenaleroy380.overblog.fr/2026/10/t-rk-if-a-yandex-disk.html) · [Пример](https://statics.pancake.vn/web-media-264/f4/ca/78/1f/2d3e2e49ff6468b2064f2c5b404e6b6169cb4e1f96adf886f8948da2.pdf) · [тестами](https://radicle.network/nodes/seed.pipapo.org/rad%3Az27xduaq9FpXx2XR1WwLEQT3S84s1/issues/a9078ad550af16ab7ee206f28c6b42a9efd3ff66) · [правках](https://articlescad.com/evie-harper-porn-gallery-evie-harper-sex-photos-387847.html) · [элементов](https://yakihonne.com/article/naddr1qvzqqqr4gupzpm2vgy45paxhz7z032gcanz04mrzd8m29cfl49e53ul694yenlzrqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngd3excekvcmz94jngd3k956rsdty94snsenx943nydmrxccnzwfn89sns4xj4f6) · [Отсортировать](https://sokolovadam49.wixsite.com/my-site-1/post/%D9%84%D8%AD%D8%B3-%D8%B1%D8%AC%D9%84%D9%8A%D9%86) · [работы](https://rentry.co/1-187663) · [нескольких](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/crystal-sunshine-crystal-sunshine-crysta-127b89.pdf) · [python](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [работает](https://rentry.co/ejen-ali-r34-705398) · [всплывает](https://writefreely.ethibox.fr/oza003bc/sbc0058) · [сначала](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az3BabdemsLXrD76yHMfe4TNAta1H/issues/a9bd58e558323e97e6b3ff2a3c7cb203cdbd53e0) · [решение](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-874a3d.pdf) · [защищает](https://ecency.com/@tomasruzick4961/elliqueen-532d77) · [проверять](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-oshibki-mvg7mu08.md) · [убеждаемся](https://yakihonne.com/article/naddr1qvzqqqr4gupzqs6y4h22j8zf8ey9meltu06ckgw7eflm23f3w0xk0n0nrcnrruehqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkvdr9vgenycmr95mrvetp956xxcnr95uxxwpe95mkxdtyx3jrydn9vgekz4j3c80) · [копии](https://jaflysilve.freeflarum.com/d/4629-4629-request-refused-illegal-content) · [примерах](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-aef7a6.pdf) · [сокращается](https://kappa.lol/Hp9aRS) · [второй](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/wnru621526-c944bf.pdf) · [делает](https://statics.pancake.vn/web-media-264/35/d7/65/40/a9d8bde057df981ee27889f0df74b05a997855f2d3410507c0aa4151.pdf) · [времени](https://danielhansen60.wixsite.com/my-site-1/post/%D0%B3%D0%BE%D0%BB%D1%8B%D0%B5-%D1%82%D0%BE%D0%BB%D1%81%D1%82%D1%8B%D0%B5-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D0%B8)

