Лабораторная 3
Параллелизация рекурсивных алгоритмов.

Некоторые виды рекурсивных алгоритмов, которые невозможно или сложно преобразовать в последовательно-итеративные, можно достаточно простыми средствами преобразовать в параллельно-итеративные. Один из таких алгоритмов - быстрая сортировка. Фактически, алгоритм быстрой сортировки состоит из двух частей. В первой части сортируемый набор данных разбивается на 2 (реже - более двух) блока меньшего размера таким образом, что между значениями блоков обеспечивается отношение упорядоченности (для любой пары блоков все значения одного из этих блоков не превышают значений другого блока). Вторая часть состоит в рекурсивном вызове алгоритма сортировки для каждого из полученных блоков. Т.к. результат работы одного алгоритма никак не зависит от другого (сортируемые блоки - не пересекаются), то появляется возможность обеспечить параллельный вызов алгоритма сортировки и немедленно завершить основной алгоритм, избавившись тем самым от рекурсии и ускорив сортировку на многопроцессорных системах.

Задание

Разработать параллельный алгоритм быстрой сортировки.

Исходные данные: неупорядоченный массив

Результирующие данные:: упорядоченный массив.