# Writing tests for quicksort

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

## Задача

Реализовать быструю сортировку — один из самых известных алгоритмов «разделяй и властвуй».

## Решение

```python
def quicksort(arr: list[int]) -> list[int]:
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)


print(quicksort([3, 6, 8, 10, 1, 2, 1]))
```

## Как это работает

Выбирается опорный элемент, массив делится на три части (меньше, равно, больше), затем части сортируются рекурсивно и склеиваются.

## Пример работы

```text
[1, 1, 2, 3, 6, 8, 10]
```

## Сложность

O(n log n) в среднем, O(n²) в худшем случае.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

**Читайте также:**

[случайной](https://videosfree.duckdns.org/aila+mami+porn?f=linkcentre) · [Решение](https://team.writefreely.dev/ozdfd7d2/purrkaya) · [сразу](https://saminupss.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-06c1e0.pdf) · [привычка](https://articlescad.com/silkbt030-376937.html) · [опорный](https://rentry.co/thu-dam-s-792595) · [Сложность](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/fairybaby-09-a61a42.pdf) · [учебных](https://veronikapopa78.wixsite.com/my-site-1/post/maomiav) · [quicksort(right](https://kappa.lol/qbDAQZ) · [меньше](https://gellaryforum.freeflarum.com/d/27895-27895-tiffanie-elina) · [быструю](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [quicksort(arr](https://discuss.tchncs.de/post/65439669) · [сортируются](https://yakihonne.com/article/naddr1qvzqqqr4gupzpy3ptf37gndcqyn3qm7tckk5j5735s6xjncyds4n4rhtfj8vwdh4qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkvvf5xqcxgct995exzenx956rsvfk94snze3h943njc3nvvcnwdpnv56rvt2mgwg) · [включая](https://saminupss.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/juliana-bonde-x-v-deos-fc24f3.pdf) · [Выбирается](https://kraligor42.wixsite.com/my-site-1/post/project-sekai-nsfw) · [правках](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/dartzai-b7dda6.pdf) · [Реализовать](https://sway.cloud.microsoft/CN78nOr4CHQ67842) · [задаче](https://statics.pancake.vn/web-media-264/35/a6/d7/fd/34c688898224733bacdc12d8d215549a276f979c68ffd67a0477707f.pdf) · [Пример](https://saminupss.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/anntobbz-thrusts-a-dildo-in-her-cunt-a664a9.pdf) · [print(quicksort([3](https://discuss.tchncs.de/post/65442929) · [ошибки](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/boystudio-255-90199b.pdf) · [массив](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [рекурсивно](https://team.writefreely.dev/oz8a0576/kittykeettt) · [pivot](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [проверка](https://hey.xyz/posts/8m7cjppkn8a48gbak1) · [Тесты](https://yakihonne.com/article/naddr1qvzqqqr4gupzq7eeg9al979wndrfnu794w4v09xpwaxj6zvg5dprst5qqvy47sl7qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknqvnzvgcrqctz94nxvvnp956xzwf4943rqet995urxcfevfjrydtx8y6xxja6c9v)

