# Solving and testing quicksort (part 003f)

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

## Задача

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

## Решение

```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://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [затем](https://rentry.co/rmtxazrr) · [самых](https://paste.rs/l3Y7T) · [среднем](https://marieroux757.overblog.fr/2026/10/post-7.html) · [второй](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [минимум](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/accidentally-fucked-mom-aace48.pdf) · [quicksort(left](https://rentry.co/gallery-163980) · [Задача](https://yakihonne.com/article/naddr1qvzqqqr4gupzq92m5relxg2pt24rqfedrvrsfejucrdstdr68mynkfrywczuksa8qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykk2dt9xccrxef595exvvpk956x2v3h94sk2eph95exger9xp3xxefcvgen2sh7avf) · [нескольких](https://wuchu-pub.com/uploads/20261019/76367da394ebbe1b497f402ea732e885.pdf) · [задаче](https://statics.pancake.vn/web-media-264/fb/cc/ec/91/46934d94416a7e5ee389ddb67f17ed9ab919242a3ffe990e3f422690.pdf) · [опорный](https://discuss.tchncs.de/post/65439971) · [assert](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/lascivious-exposed-lylith-lavey-gets-her-1e3748.pdf) · [быструю](https://jaflysilve.freeflarum.com/d/3404-3404-turbanli-orospu-best-adult-videos-and-photos) · [известных](https://radicle.network/nodes/seed.pipapo.org/rad%3Az3mPH7n7KzZdbgGj42AMfmsd2Agr/issues/23f028524f22cd282f5312430b527cbd25f8a04e) · [склеиваются](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [right](https://privatebin.devol.it/?4607d7d3dd1e9c8c#2owMSHqW5dKPPJH1BcAKmvgMe7Vr7dW2kzuscQP8dDnH) · [arr[len(arr](https://stevenprebble.com/stories+about+weddings?f=linkcentre) · [худшем](https://blog.spikyhair.club/oza7ab90/buxianliu-dudu-fitness-blogger-chinese-model-photo-gallery) · [проверки](https://discuss.tchncs.de/post/65443901) · [разделяй](https://rentry.co/h78bxko5) · [quicksort(right](https://rentry.co/mafioso-roblox-804623) · [добавим](https://jaflysilve.freeflarum.com/d/3553-3553-victoria-bozsar-sensual-pantyhose-galleries-on-masterfap) · [Проверка](https://paste2.org/e9kBIttx) · [Сложность](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-f370c3.pdf) · [middle](https://radicle.network/nodes/index.radicle.garden/rad%3Az2HpJAWq9izfq5oT2PCjYAHZAcoW2/issues/0ca398ad8b306351b078e1a449eec1c6df825db9)

