# Walking through merge sort (part 3aa4)

В этом материале мы спокойно и по шагам разберём учебную задачу на программирование.

## Задача

Реализовать сортировку слиянием — устойчивый алгоритм с гарантированной сложностью 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](https://sway.cloud.microsoft/WUSlSwLccBGiKeQq) · [while](https://drop.xtrafrancyz.net/selif/zqhn14t0dh.pdf) · [шагам](https://drop.xtrafrancyz.net/selif/m3d13al7u4.pdf) · [времени](https://drop.xtrafrancyz.net/selif/o3q6v4b7gc.pdf) · [линейно](https://drop.xtrafrancyz.net/selif/0b2dd9q103.pdf) · [Пример](https://hey.xyz/posts/9dq0y03jc2zh2n0gnb) · [len(right](https://paper.wf/olgabecker74log/xiang-wei-tu-dou) · [тестах](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [сливаются](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/kaymak-gibi-66-seks-hikayeleri-52ec68.pdf) · [делится](https://rentry.co/fnf-sky-r34-163519) · [гарантированной](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [материале](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/valentina-midget-fucking-f3489c.pdf) · [руками](https://privatebin.devol.it/?941fd509bae84f64#3jsF6dV1D97KEhUZon6qMh3fVzqUReSCfyRqGQ6AGH53) · [всегда](https://yakihonne.com/article/naddr1qvzqqqr4gupzqwu6qyhlewc50u4q48pazmfm9akgxd9pjk2qda680pfvnl5zjyyyqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykn2wfj8q6ryefh94jnxepn956xvvf394skyd3595cxzd3sxgergcmzxy6xz7a6mzp) · [Задача](https://news-ctl-posts.hashnode.dev/walking-through-anagram-checking-part-5a8c) · [сложностью](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-71eaeb.pdf) · [отсортированных](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [куски](https://radicle.network/nodes/seed.pipapo.org/rad%3Az3T6sGtVdV55uCXwf71VAbaZqQ1bt/issues/276b76ca3c0bb6122c45aa1c8bf59c811553e261) · [len(left](https://blogfreely.net/catherine-vasilyev70/tim-tebow-wallpaper-eagles-and-patriots-football-photos) · [merge(left](https://kappa.lol/RgNQur) · [right[j](https://news-ctl-posts.hashnode.dev/two-approaches-to-word-frequency-counting-part-2003)

