# Solving and testing merge sort (part 493f)

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

Реализовать сортировку слиянием — устойчивый алгоритм с гарантированной сложностью 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  # и второй случай
```

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

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

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

[отсортированные](https://forcesarmees.tg/%D0%B1%D0%B5%D0%BD+%D1%82%D0%B5%D0%BD+%D0%B7%D0%BD%D0%BE%D0%B9%D0%BD%D0%BE%D0%B5+%D0%BB%D0%B5%D1%82%D0%BE?f=instapaper) · [Решение](https://articlescad.com/mesudachi-the-animation-ep2-380529.html) · [отсортированных](https://yakihonne.com/article/naddr1qvzqqqr4gupzqawe70am0km7cdn5rd7z4qqf3p9l6zctlxmt6mpkhuuufvy5jpw9qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzep5xgensdtz95mrjd3k956rqery95urqdtz94nrqvf4xvurgvpcxuunzwxaz9p) · [делится](https://yakihonne.com/article/naddr1qvzqqqr4gupzphsdqpgqarrmfhu4jj9lrupfwkapt6l5eq6htvrvpeh0tr76s4enqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknvde4xsmxywp495mryc3n956rgve595uxxefj95mxyenpxa3nzvekxvenykyaheq) · [видно](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/purenudist-0e2efb.pdf) · [минимум](https://yakihonne.com/article/naddr1qvzqqqr4gupzpp2ps78p5shgq83szepn2mdemzhxsup7p4dyeqclrhx00cspnvt9qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkywf3xqmrzveh94jrjctz956rgvek943xxd3495urxepexpnxgdp5vyuny4msrza) · [становится](https://blogfreely.net/catherine-vasilyev70/pao-zai-wo-jia-de-la-mei-man-hua) · [сложностью](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-48811a.pdf) · [работы](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [затем](https://articlescad.com/lizzy-red-porn-379443.html) · [случаи](https://ecency.com/@tomasruzick4961/anna-vlasova-leaks-af1fcb) · [крайние](https://spot-message.com/%EA%B7%80%EC%B9%BC+%EC%95%BC%EC%A7%A4?f=instapaper) · [решение](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/shawtyrosse-cb753e.pdf) · [кодом](https://articlescad.com/yuu-sakura-hardcore-sex-and-masturbation-378573.html) · [len(left](https://statics.pancake.vn/web-media-264/3e/d8/73/6b/671bac08e749d6cec25c1e3e94da0ca7b185134a839f71c8c178fbee.pdf) · [правках](https://sway.cloud.microsoft/ay8ppbewP6fZwGDU) · [сразу](https://raindrop.io/undefined/collection-75601612) · [нескольких](https://me2woman.com/t%C3%BCrk+if%C5%9Fa+azar?f=linkcentre) · [устойчивый](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-indo-enak-banget-tukeran-istri-f8b03c.pdf) · [right[j](https://rentry.co/eyma-mesto-lu-if-a-429257) · [Хорошая](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Разберём](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ammyasxv-7bd942.pdf) · [включая](https://exhibit40922.mataroa.blog/blog/julio-jose-ipcam-xxx-videos-and-uncensored-secret-access/) · [пополам](https://cabinpressure.tv/ay%C5%9Fen+%C3%A7elik+onlyfans+ifsa?f=linkcentre) · [merge(left](https://ecency.com/@karelcerny7473/vzdialennos-miest-95b8bd) · [времени](https://jaflysilve.freeflarum.com/d/1459-1459-abs-art-watchfighters) · [соседние](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg)

