# Лабораторная работа 3. Процессы. Неименованные каналы **Вариант 13: 72-01. Сортировка массива рекурсивным разделением.** Программа реализует сортировку массива рекурсивным разделением с построением дерева процессов. Каждый процесс получает часть массива, при разрешенной глубине рекурсии делит ее на две части, создает двух потомков через `fork()` и обменивается с ними данными через неименованные каналы `pipe()`. Входные данные во всех экспериментах считаются **полностью случайными**. Отдельного режима `mode` нет. Для повторяемости используется только параметр `--seed`. ## Алгоритм 1. Родитель генерирует массив случайных целых чисел. 2. На каждом рекурсивном шаге массив делится на левую и правую половины. 3. Для каждой половины создается дочерний процесс. 4. Родитель передает дочернему процессу данные в формате: - `uint64_t count`; - `count` значений типа `int32_t`. 5. Потомок сортирует полученную часть тем же алгоритмом. 6. При достижении `max_depth` или `min_size` сортировка выполняется локально без новых процессов. 7. Потомок возвращает результат родителю в формате: - `uint64_t count`; - `count` отсортированных значений; - `uint64_t processes` — число процессов в поддереве. 8. Родитель выполняет слияние двух отсортированных частей. Для одного потомка используются два канала: родитель → потомок и потомок → родитель. Так как потомков два, на рекурсивном узле создается четыре канала. ## Сборка и запуск ```bash make ./lab3 --size 100000 --depth 2 --min-size 4096