# Solving and testing quicksort (part 70e6)

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

## Задача

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

## Решение

```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  # и второй случай
```

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

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

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

[части](https://pavelhorvat2.wixsite.com/my-site-1/post/andeemind-onlyfans-leaks-tattooed-babe-pov-threesome-bbc-dildo) · [работает](https://radicle.network/nodes/seed.pipapo.org/rad%3AziKrkzoTngCynJwTLQtz4TAFf4uk/issues/fc2a9cc608ae9cc8ca7f66ea4e17e9162ae4cb24) · [задачу](https://lauraleroy158.overblog.fr/2026/10/i-layda-t-rk-st-n-ilaydaaust-onlyfans-leaks-amateur-videos.html) · [right](https://rimworld.gallery/m/random/t/16306) · [разработчика](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/kaiser-x-isagi-10b248.pdf) · [middle](https://yakihonne.com/article/naddr1qvzqqqr4gupzq7m6hepqp7hdkv0pvfr3nv3s6dwczysr5qxv5g0lqyr7tkena7ksqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknzdeexuekgcnz95mnyd3h956rwwps95urjwpn95crvdphxe3xgcfn8yuk2nvv9yy) · [Задача](https://articlescad.com/sissy-381160.html) · [делится](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [крайние](https://curated43830.mataroa.blog/blog/3e8-d3-c88/) · [python](https://drop.xtrafrancyz.net/selif/7y9y66blrz.pdf) · [сначала](https://ecency.com/@janjelinek7089/secretstarsessions-371493) · [видно](https://paper.wf/juliaweber68log/bokep-barat-vs-anjing-dan-kuda) · [элемент](https://discuss.tchncs.de/post/65439595) · [опорный](https://hey.xyz/posts/2qd2s61ey6nj2v4vqts) · [Реализовать](https://rentry.co/noturdreamgf-367494) · [сортируются](https://keliibopptape.com/starsessions+secretstars?f=linkcentre) · [проверок](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [print(quicksort([3](https://rentry.co/angelwoof-onlyfans-videos-587013) · [правках](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ivantill-r34-e8d782.pdf) · [убеждаемся](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/gay-furry-porn-comics-may-the-best-man-w-059ae0.pdf) · [len(arr](https://jaflysilve.freeflarum.com/d/1843-1843-grandmas-huge-tits-splattered-with-cum-preview) · [assert](https://news-ctl-posts.hashnode.dev/common-mistakes-in-computing-an-average-part-f258) · [проверка](https://ecency.com/@zdenekpospi7879/liz-oliveira-privacy-31d8b8) · [базовая](https://hey.xyz/posts/2s5kywa4kc3qxnf76b9) · [среднем](https://articlescad.com/bokep-barat-vs-anjing-dan-kuda-381264.html) · [случаи](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [включая](https://sway.cloud.microsoft/EUI98IHDnVjMFxfn)

