# Writing tests for merge sort (part e77f)

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

## Задача

Реализовать сортировку слиянием — устойчивый алгоритм с гарантированной сложностью O(n log n).

## Решение

```python
def merge_sort(arr: list[int]) -> list[int]:
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)


def merge(left: list[int], right: list[int]) -> list[int]:
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i]); i += 1
        else:
            result.append(right[j]); j += 1
    return result + left[i:] + right[j:]


print(merge_sort([5, 2, 4, 6, 1, 3]))
```

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

Список делится пополам до кусков по одному элементу, затем соседние куски сливаются в отсортированные последовательности. Слияние двух отсортированных списков линейно.

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

```text
[1, 2, 3, 4, 5, 6]
```

## Сложность

O(n log n) по времени всегда, O(n) по памяти.


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

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

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

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

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

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

[python](https://rentry.co/gallery-929528) · [корректности](https://statics.pancake.vn/web-media-264/02/18/29/c6/17aa3442f086ab141ccb132f6c5359f2a2271160dfa5e7b364913587.pdf) · [случай](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [затем](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [assert](https://privatebin.devol.it/?fd3114d011567c08#5SRB6ESjZeXL92qB9r5XStRAfeSxWAnpCvs5tpvCshpU) · [видно](https://privatebin.devol.it/?5e2573ac2bd0a624#3SDcNvNL8XYFhcVDrCmSHTKgUfGTcHnM5QQjYhuFFa15) · [len(left](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/anna-anon-x-34b591.pdf) · [привычка](https://slot404oke.com/flm+sks+lswdn?f=instapaper) · [работает](https://stills38675.mataroa.blog/blog/ekaterina-lisina-foot-fetish/) · [проверок](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bocil-diewe-c15a71.pdf) · [проверка](https://privatebin.devol.it/?827944d8ec94aa4c#5WSo4mtGtNCtEQVHWaK7fQL2pGJmPyRovN1ocdk5ukkP) · [ошибки](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-97d72c.pdf) · [right[j](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [куски](https://articlescad.com/konig-r34-382973.html) · [Задача](https://yakihonne.com/article/naddr1qvzqqqr4gupzq5lyn2rkdvlzhhua3e6y2ay3vwawyac6gprgq0qmdxjn7x2cd7a4qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknzcnyxg6xydf495eryerz956rxvrp95uxvdpc943rwcmzvgcx2dtzvgmkytdss5v) · [Решение](https://jaflysilve.freeflarum.com/d/2561-2561-wo-de-shi-jie-zhen-ni-dong-hua) · [работы](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/average-dva-sposoba-mvczkixo.md) · [второй](https://writefreely.ethibox.fr/ozbb5198/610heizhen) · [while](https://discuss.tchncs.de/post/65439961) · [нескольких](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/cutiecabani-74e93e.pdf) · [Пример](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rule34-digital-circus-c67190.pdf) · [кусков](https://drop.xtrafrancyz.net/selif/txduu58y0q.pdf) · [элементу](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/av-4us-95c1ed.pdf) · [list[int](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ngintip-mandi-kolam-renang-d51dfc.pdf) · [отсортированные](https://yakihonne.com/article/naddr1qvzqqqr4gupzpmwnuffngg6j7aeady6afy3u69z64qa580uh6x45ccf8gl00dhalqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngdnz8q6nxdek95uxzdnx956rjvmy95uxyd3495mngdtxv9jrxcfcxcurvm32hz0) · [len(right](https://paper.wf/olga1993log/emmamonteroo) · [слиянием](https://stills96338.mataroa.blog/blog/giga/)

