# Exploring merge sort (part bf28)

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

## Задача

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


Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.

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

[закрепляется](https://hey.xyz/posts/1tgbyjg039thhqk2yrb) · [left[i](https://hey.xyz/posts/1ab7rxwqrv7exc03083) · [Задача](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [соседние](https://articlescad.com/gizli-ensest-twitter-386890.html) · [len(arr](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/yuyuanyaya-c7266a.pdf) · [return](https://kappa.lol/iX4Gmx) · [работы](https://yakihonne.com/article/naddr1qvzqqqr4gupzq97x287c5sna64dxq3surgc3k5ywx9d8shvvv6fnm0ds5s4mcga9qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzdtxxf3nzefj95ckgcfc956xxwpc95unse3c943xydfcx5uxxce4xd3k27jgh5q) · [отсортированные](https://radicle.network/nodes/seed.pipapo.org/rad%3Az48Dr4gewaWw5awJdYLMVhZvJXb7c/issues/6a908376696f732e0307968a9b011e8abe1543bd) · [list[int](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [задачу](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nature-cute-wallpaper-dad9ae.pdf) · [одному](https://drop.xtrafrancyz.net/selif/51zeg2ihyu.pdf) · [последовательности](https://statics.pancake.vn/web-media-264/0e/be/f2/78/b87964aeaa13b0fc8a388493b667e69c8d26b5a0bd38b9493406dbc8.pdf) · [линейно](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/twitter-t-rbanl-gizli-f35a31.pdf) · [руками](https://news-ctl-posts.hashnode.dev/solving-and-testing-minimum-and-maximum-of-a-list-part-8822) · [Пример](https://ecency.com/@janjelinek7089/secretstars-starsessions-exclusive-star-session-porn-photos--de0c01) · [перепишите](https://discuss.tchncs.de/post/65441852) · [пополам](https://statics.pancake.vn/web-media-264/73/68/4e/b9/36c046d494ea65b742c62740bc304a3e56f9746ed48b3f69440b813b.pdf) · [сортировку](https://hey.xyz/posts/2s5kywa4kc3qxnf76b9) · [элементу](https://statics.pancake.vn/web-media-264/e0/05/2d/84/b5ec9ce05520aac7c3fc52e1cb3ae1b7b1a10c8277f53fd6c45cb75f.pdf) · [while](https://pen.absturztau.be/oz42cdf3/chernyi-listovoi-metall-tsena) · [len(left](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [кусков](https://drop.xtrafrancyz.net/selif/pmt18vfvt6.pdf) · [спокойно](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ms-sethi-doggy-e7a7c1.pdf) · [практикой](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-tests-mvfn9z2d.md) · [хорошо](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-f0aacb.pdf) · [куски](https://writefreely.ethibox.fr/oz8c420a/dass-143-jav-video-with-chinese-subtitles-watch-online)

