Выбираем элемент массива в качестве разделителя (например, первый)

Располагаем элементы, не большие разделителя, в левом подмассиве, а не меньшие — в правом подмассиве.

Если число элементов в левом подмассиве больше 1, то применяем к нему алгоритм в целом, иначе конец алгоритма.

Если число элементов в правом подмассиве больше 1, то применяем к нему алгоритм в целом, иначе конец алгоритма.

Пункт 2 алгоритма выполняется следующим образом. Просматриваем массив слева и находим элемент, не больший разделителя. Затем просматриваем массив справа и находим элемент, не меньший разделителя. Выполняем обмен найденных элементов. Просмотр заканчивается, когда индекс первого найденного элемента превысит индекс второго найденного элемента. В результате получаем левый и правый подмассивы.

Пример.

Исходный массив (30 10 40 20 15 17 45 60)

Разделитель 30

После выполнения п.2 получаем следующие два подмассива:

(17 10 15 20) (40 30 45 60)

И так далее, пока выполнится условие окончания алгоритма, т.е. когда все подмассивы будут содержать по одному элементу.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: